diff options
author | Nicolas Graves <ngraves@ngraves.fr> | 2023-03-25 15:15:21 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-03-30 23:18:16 +0200 |
commit | 13b2d110eec89f856964dce0a66783fbd824c4a4 (patch) | |
tree | 3b1664bd1c943fd702cd070f3dfd497f5c910c91 | |
parent | f4d7b901db90b029a5d6a1f54699d3ab04ada2af (diff) | |
download | guix-13b2d110eec89f856964dce0a66783fbd824c4a4.tar guix-13b2d110eec89f856964dce0a66783fbd824c4a4.tar.gz |
gnu: Add suitesparse-3.
* gnu/packages/maths.scm (suitesparse-3): New variable.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | gnu/packages/maths.scm | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index bb88873a0d..22464ea3d1 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5202,6 +5202,95 @@ packages.") ;; GPUQREngine, RBio, SuiteSparse_GPURuntime, SuiteSparseQR, UMFPACK (license (list license:gpl2+ license:lgpl2.1+)))) + +;; This outdated version is used to build the scilab package. +(define-public suitesparse-3 + (package + (inherit suitesparse) + (name "suitesparse") + (version "3.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/DrTimothyAldenDavis/SuiteSparse") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0wxk755nzps0c9la24zqknqkzjp6rcj5q9jhd973mff1pqja3clz")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no "check" target + #:make-flags + ,#~(list + (string-append "CC=gcc") + "AR=gcc -shared -o" + "RANLIB=touch" + "CFLAGS=-O3 -fPIC -I../Include" + "TBB=-ltbb" + + ;; Disable metis@4 (nonfree) support. + "CHOLMOD_CONFIG=-DNPARTITION" + "METIS=" + "METIS_PATH=" + + ;; The default is to link against netlib lapack. Use OpenBLAS + ;; instead. + "BLAS=-lopenblas" "LAPACK=-lopenblas" + + (string-append "INSTALL_LIB=" + (assoc-ref %outputs "out") "/lib") + (string-append "INSTALL_INCLUDE=" + (assoc-ref %outputs "out") "/include") + "library") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'correct-build-configuration + (lambda _ + ;; Invert build order: CHOLMOD before KLU. + (substitute* "Makefile" + (("\t\\( cd CHOLMOD ; \\$\\(MAKE\\) \\)\n$") + "") + (("\\( cd KLU ; \\$\\(MAKE\\) \\)") + (string-append "( cd CHOLMOD ; $(MAKE) )\n\t" + "( cd KLU ; $(MAKE) )"))) + ;; Build shared libraries. + (substitute* (find-files "." "akefile$") + (("lib([a-z]+)\\.a" all libname) + (string-append "lib" libname ".so"))) + ;; Delete broken KLU Demo step. + (substitute* "KLU/Makefile" + (("\\( cd Demo ; \\$\\(MAKE\\) \\)") + "")))) + (replace 'install + (lambda _ + ;; Install libraries. + (for-each + (lambda (x) + (install-file + x + (string-append (assoc-ref %outputs "out") "/lib"))) + (find-files "." "\\.so$")) + ;; Install header files. + (for-each + (lambda (x) + (install-file + x + (string-append (assoc-ref %outputs "out") "/include"))) + (find-files "." "\\.h$")))) + ,@(if (target-riscv64?) + ;; GraphBLAS FTBFS on riscv64-linux + `((add-after 'unpack 'skip-graphblas + (lambda _ + (substitute* "Makefile" + ((".*cd GraphBLAS.*") "") + (("metisinstall gbinstall moninstall") + "moninstall"))))) + '()) + (delete 'configure)))) ;no configure script + (inputs + (list tbb openblas gmp mpfr)))) + (define-public atlas (package (name "atlas") |