Subject: [bug#74419] [PATCH 3/5] gnu: Add libcxi.

From: Ludovic Courtès <[email-masked]>
Date: Mon, 18 Nov 2024 15:59:18 +0100

From: Ludovic Courtès <[email-masked]>

* gnu/packages/linux.scm (libcxi): New variable.

Change-Id: I714d8694c796d5bc3ce4756d5aae576031288699
---
 gnu/packages/linux.scm | 55 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 17f743ef11..6b2a0c201e 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -150,6 +150,7 @@ (define-module (gnu packages linux)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages llvm)
@@ -9046,6 +9047,60 @@ (define-public cxi-driver
 Currently the Linux driver itself is missing from this package.")
       (license license:gpl2+))))
 
+(define-public libcxi
+  (let ((commit "5b6f8b5d57017c7963debb379d5693c59aca63ed")
+        (revision "0"))
+    (package
+      (name "libcxi")
+      (version (git-version "1.0.1" revision commit))
+      (home-page "https://github.com/HewlettPackard/shs-libcxi")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference (url home-page) (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1h3dhird8p11q4ziaxzg1hr5gxcgwx1limzdcyildyaw50dy549g"))))
+      (build-system gnu-build-system)
+      (arguments
+       (list #:configure-flags
+             #~(list "--disable-static"
+                     (string-append "--with-udevrulesdir="
+                                    #$output "/lib/udev/rules.d"))
+
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-before 'configure 'set-cassini-file-names
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (substitute* "utils/cxi_dump_csrs.py"
+                       (("/usr/share/cassini-headers/csr_defs.json")
+                        (search-input-file
+                         inputs
+                         "/share/cassini-headers/csr_defs.json"))))))))
+      (native-inputs (list autoconf
+                           automake
+                           libtool
+                           pkg-config
+                           python-wrapper))
+      (inputs (list libconfig
+                    libuv
+                    fuse-2
+                    libyaml
+                    libnl
+                    numactl
+                    eudev
+                    (list lm-sensors "lib")))
+      (propagated-inputs (list cassini-headers cxi-driver))
+      (synopsis "Interface to the Cassini/Slingshot high-speed interconnect")
+      (description
+       "Libcxi provides applications with a low-level interface to the
+Cray/HPE Cassini high-speed @acronym{NIC, network interface controller}, also
+known as Slingshot.")
+
+      ;; License is spelled out in 'cray-libcxi.spec' and in source file
+      ;; headers.
+      (license (list license:lgpl2.1+ license:bsd-3))))) ;dual-licensed
+
 (define-public libfabric
   (package
     (name "libfabric")
-- 
2.46.0