summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorDavid Elsing <david.elsing@posteo.net>2023-10-05 21:35:01 +0000
committerLudovic Courtès <ludo@gnu.org>2023-10-06 12:26:47 +0200
commitb2783361807285a5df703264ba902606b1bb7ce4 (patch)
tree63e0e89f47bad8fd7299d03055df109a1d04803a /gnu/packages
parent730241267665ab0758206b6510da533a010332c2 (diff)
downloadguix-b2783361807285a5df703264ba902606b1bb7ce4.tar.gz
gnu: Add suitesparse-spex.
* gnu/packages/maths.scm (suitesparse-spex): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/maths.scm70
1 files changed, 70 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9a013825de..b41b2be6e9 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5797,6 +5797,76 @@ for reading and writing sparse matrices in the Rutherford/Boeing format.")
 edge cuts using a coarsening and refinement framework.")
     (license license:gpl3)))
 
+(define-public suitesparse-spex
+  (package
+    (name "suitesparse-spex")
+    (version "2.2.0")
+    (source suitesparse-source)
+    (build-system cmake-build-system)
+    (arguments
+     (list
+      #:tests? #f
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'chdir
+            (lambda _
+              (chdir "SPEX")))
+          (add-after 'chdir 'set-cmake-module-path
+            (lambda _
+              (substitute* "CMakeLists.txt"
+                (("set.*CMAKE_MODULE_PATH.*")
+                 (string-append
+                  "set(CMAKE_MODULE_PATH "
+                  (string-join
+                   (map (lambda (path)
+                          (string-append path "/lib/cmake/SuiteSparse"))
+                        (list #$suitesparse-amd
+                              #$suitesparse-colamd
+                              #$suitesparse-config)))
+                  ")\nset(DUMMY\n")))))
+          (add-after 'build 'build-doc
+            (lambda _
+              (with-directory-excursion "../SPEX/Doc"
+                (invoke "make"))))
+          (add-after 'install 'install-doc
+            (lambda _
+              (install-file "../SPEX/Doc/SPEX_UserGuide.pdf"
+                            (string-append #$output "/share/doc/"
+                                           #$name "-" #$version)))))))
+    (inputs
+     (list gmp
+           mpfr
+           suitesparse-amd
+           suitesparse-colamd
+           suitesparse-config))
+    (native-inputs
+     (list (texlive-updmap.cfg
+            (list texlive-paralist
+                  texlive-comment
+                  texlive-psfrag
+                  texlive-soul
+                  texlive-multirow
+                  texlive-algorithms
+                  texlive-float
+                  texlive-algorithmicx
+                  texlive-cprotect
+                  texlive-bigfoot
+                  texlive-caption
+                  texlive-listings
+                  texlive-xcolor
+                  texlive-framed
+                  texlive-mdframed
+                  texlive-etoolbox
+                  texlive-zref
+                  texlive-needspace))))
+    (home-page "https://people.engr.tamu.edu/davis/suitesparse.html")
+    (synopsis "Package for SParse EXact algebra")
+    (description "SPEX is a set of routines for sparse exact linear algebra.
+It contains the SPEX Left LU library for computing a sparse exact left-looking
+LU factorization for solving unsymmetric sparse linear systems.")
+    ;; Dual licensed.
+    (license (list license:lgpl3+ license:gpl2+))))
+
 (define-public suitesparse
   (package
     (name "suitesparse")