summary refs log tree commit diff
diff options
context:
space:
mode:
authorSharlatan Hellseher <sharlatanus@gmail.com>2022-09-28 21:37:07 +0100
committerLudovic Courtès <ludo@gnu.org>2022-10-10 11:16:08 +0200
commitb72e6036ddc6bf73f915f8898b49c067de833735 (patch)
treef8221f1eede08ca7ede8c0df9724e939cf733f44
parent1589a825daf7d994a7236fdffdc5a2f98fe8cc38 (diff)
downloadguix-b72e6036ddc6bf73f915f8898b49c067de833735.tar.gz
gnu: Add kronosnet.
* gnu/packages/high-availability.scm (kronosnet): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/high-availability.scm60
1 files changed, 60 insertions, 0 deletions
diff --git a/gnu/packages/high-availability.scm b/gnu/packages/high-availability.scm
index 46247c4e13..5f62bb1748 100644
--- a/gnu/packages/high-availability.scm
+++ b/gnu/packages/high-availability.scm
@@ -77,3 +77,63 @@ not intended to be an all-encompassing library, but instead provide focused
 APIs that are highly tuned for maximum performance for client-server
 applications.")
     (license license:lgpl2.1)))
+
+(define-public kronosnet
+  (package
+    (name "kronosnet")
+    (version "1.24")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/kronosnet/kronosnet")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1b8rz7f2h3scrq0xcqz58ckzsvv08g31j5jgy2v4i6w87r9c75lw"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; XXX: Multiple tests failed. Tests
+     ;; require very complex environment and for some of them root privileges to
+     ;; set network configuration. It has it's own CI based on Jenkis
+     ;; https://ci.kronosnet.org/.
+     (list #:tests? #f
+           #:configure-flags #~'("--disable-static")
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'bootstrap 'fix-version-gen
+                          (lambda _
+                            (call-with-output-file ".tarball-version"
+                              (lambda (port)
+                                (display #$version port))))))))
+    (native-inputs (list autoconf
+                         automake
+                         doxygen
+                         libtool
+                         net-tools
+                         pkg-config))
+    (inputs (list lksctp-tools
+                  libnl
+                  libqb
+                  libxml2
+                  lz4
+                  lzo
+                  nss
+                  nspr
+                  openssl
+                  xz
+                  zlib
+                  `(,zstd "lib")))
+    (home-page "https://kronosnet.org/")
+    (synopsis "Network abstraction layer designed for High Availability")
+    (description
+     "Kronosnet, often referred to as @code{knet}, is a network
+ abstraction layer designed for High Availability use cases, where redundancy,
+ security, fault tolerance and fast fail-over are the core requirements of
+ your application.
+
+ Kronosnet is the new underlying network protocol for Linux HA components
+ (Corosync), that features ability to use multiple links between nodes,
+ active/active and active/passive link failover policies, automatic link
+ recovery, FIPS compliant encryption (nss and/or openssl), automatic PMTUd and
+ in general better performances compared to the old network protocol.")
+    (license (list license:gpl2+ license:lgpl2.1+))))