summary refs log tree commit diff
path: root/gnu/packages/maths.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludovic.courtes@inria.fr>2022-02-15 11:46:53 +0100
committerLudovic Courtès <ludo@gnu.org>2022-02-15 17:24:08 +0100
commitd4709d78c3b460d7be02f15f6cc6c85f398b1a46 (patch)
treeb72b1f25bccc1cdc7d0fb3a45b0c0fdafc81b688 /gnu/packages/maths.scm
parent64fcf9508af318cc2d71811815cfbe99063867b1 (diff)
downloadguix-d4709d78c3b460d7be02f15f6cc6c85f398b1a46.tar.gz
gnu: scotch: Update to 7.0.1.
* gnu/packages/maths.scm (scotch): Update to 7.0.1.
[source]: Switch to 'git-fetch'.
[build-system]: Switch to CMAKE-BUILD-SYSTEM.
[arguments]: Add #:configure-flags.  Remove #:make-flags.  Remove
'chdir-to-src', 'configure', and 'build-esmumps' phases.
[properties]: Update 'release-monitoring-url' property.
(scotch32, pt-scotch, pt-scotch32): Update accordingly, replacing now
useless build phases with #:configure-flags.
(scotch-shared, pt-scotch-shared): Mark as deprecated.
(mumps)[arguments]: In 'configure' phase, use '-lesmumps'
unconditionally, since that's now how pt-scotch calls it.
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r--gnu/packages/maths.scm271
1 files changed, 52 insertions, 219 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 06bf081a27..677236e42d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3606,7 +3606,7 @@ IORDERINGSC  = $(IPORD) $(IMETIS) $(ISCOTCH)"
                            `((,scotch "" "-Dscotch")))
                           ((ptscotch _)
                            `((,ptscotch
-                              "-lptesmumps -lptscotch -lptscotcherr "
+                              "-lesmumps -lptscotch -lptscotcherr "
                               "-Dptscotch")))))))))
          (replace 'build
           ;; By default only the d-precision library is built.  Make with "all"
@@ -3869,91 +3869,43 @@ implemented in ANSI C, and MPI for communications.")
 (define-public scotch
   (package
     (name "scotch")
-    (version "6.1.1")
+    (version "7.0.1")
     (source
      (origin
-      (method url-fetch)
-      (uri (string-append "https://gforge.inria.fr/frs/download.php/"
-                          "latestfile/298/scotch_" version ".tar.gz"))
-      (sha256
-       (base32 "04dkz24a2g20wq703fnyi4440ac4mwycy9gwrrllljj7zxcjy19r"))
-      (patches (search-patches "scotch-build-parallelism.patch"
-                               "scotch-integer-declarations.patch"))))
-    (build-system gnu-build-system)
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.inria.fr/scotch/scotch")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1fvgxd3ipl5xswswyadvxvlcgv6an8c229ispnlksgnlwphg10ig"))))
+    (build-system cmake-build-system)
     (inputs
      (list zlib))
     (native-inputs
      (list flex bison gfortran))
     (outputs '("out" "metis"))
     (arguments
-     `(#:make-flags (list (string-append "prefix=" %output))
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS=YES"
+                           "-DBUILD_PTSCOTCH=OFF")
        #:phases
        (modify-phases %standard-phases
-         (add-after
-          'unpack 'chdir-to-src
-          (lambda _ (chdir "src") #t))
-         (replace
-          'configure
-          (lambda _
-            (call-with-output-file "Makefile.inc"
-              (lambda (port)
-                (format port "
-EXE =
-LIB = .a
-OBJ = .o
-MAKE = make
-AR = ar
-ARFLAGS = -ruv
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
-LDFLAGS = -lz -lm -lrt -lpthread
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = ranlib
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE64"             ;use 'int64_t'
-                          ;; Prevents symbol clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"))))
-            #t))
-         (add-after 'build 'build-esmumps
-          (lambda _
-            (invoke "make"
-                    (format #f "-j~a" (parallel-job-count))
-                    "esmumps")))
-         (add-before 'install 'make-install-dirs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (mkdir (assoc-ref outputs "out"))))
          (add-after 'install 'install-metis
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "metis")))
-               (mkdir out)
-               ;; metis files are not installed with 'make install'
-               (for-each (lambda (f)
-                           (install-file f (string-append out "/include")))
-                         (find-files "../include/" ".*metis\\.h"))
-               (for-each (lambda (f)
-                           (install-file f (string-append out "/lib")))
-                         (find-files "../lib/" ".*metis\\..*"))
-               #t))))))
+             (let* ((out    (assoc-ref outputs "out"))
+                    (metis  (assoc-ref outputs "metis"))
+                    (prefix (string-length out)))
+               (for-each (lambda (file)
+                           (let ((target (string-append
+                                          metis
+                                          (string-drop file prefix))))
+                             (mkdir-p (dirname target))
+                             (rename-file file target)))
+                         (find-files out "metis"))))))))
     (home-page "https://www.labri.fr/perso/pelegrin/scotch/")
     (properties
-     `((release-monitoring-url . "https://gforge.inria.fr/frs/?group_id=248")))
+     `((release-monitoring-url
+        . "https://gitlab.inria.fr/scotch/scotch/-/releases")))
     (synopsis "Programs and libraries for graph algorithms")
     (description "SCOTCH is a set of programs and libraries which implement
 the static mapping and sparse matrix reordering algorithms developed within
@@ -3968,176 +3920,57 @@ bio-chemistry.")
 (define-public scotch32
   ;; This is the 'INTSIZE32' variant, which uses 32-bit integers, as needed by
   ;; some applications.
-  (package (inherit scotch)
+  (package
+    (inherit scotch)
     (name "scotch32")
     (arguments
      (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-phases)
-        `(modify-phases ,scotch-phases
-          (replace
-           'configure
-           (lambda _
-             (call-with-output-file "Makefile.inc"
-               (lambda (port)
-                 (format port "
-EXE =
-LIB = .a
-OBJ = .o
-MAKE = make
-AR = ar
-ARFLAGS = -ruv
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
-LDFLAGS = -lz -lm -lrt -lpthread
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = ranlib
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE32"   ;use 32-bit integers.  See INSTALL.txt
-                          ;; Prevents symbolc clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"))))))))))
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=OFF"
+           "-DCMAKE_C_FLAGS=-DINTSIZE32=1"))))
     (synopsis
      "Programs and libraries for graph algorithms (32-bit integers)")))
 
-(define-public scotch-shared
-  (package (inherit scotch)
-    (name "scotch-shared")
-    (native-inputs
-     (list gcc flex bison))
-    (arguments
-     (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-shared-phases)
-        `(modify-phases ,scotch-shared-phases
-           (replace
-            'configure
-           (lambda _
-             ;; Otherwise, the RUNPATH will lack the final path component.
-             (setenv "RPATHFLAGS" (string-append "-Wl,-rpath="
-                                              (assoc-ref %outputs "out") "/lib"))
-            (call-with-output-file "Makefile.inc"
-              (lambda (port)
-                (format port "
-EXE =
-LIB = .so
-OBJ = .o
-MAKE = make
-AR = gcc
-ARFLAGS = -shared -o
-CAT = cat
-CCS = gcc
-CCP = mpicc
-CCD = gcc
-FC = gfortran
-CPPFLAGS =~{ -D~a~}
-CFLAGS = -O2 -g -fPIC $(CPPFLAGS) $(RPATHFLAGS)
-CLIBFLAGS = -shared -fPIC
-LDFLAGS = -lz -lm -lrt -lpthread -Xlinker --no-as-needed
-CP = cp
-LEX = flex -Pscotchyy -olex.yy.c
-LN = ln
-MKDIR = mkdir
-MV = mv
-RANLIB = echo
-YACC = bison -pscotchyy -y -b y
-"
-                        '("COMMON_FILE_COMPRESS_GZ"
-                          "COMMON_PTHREAD"
-                          "COMMON_RANDOM_FIXED_SEED"
-                          "INTSIZE64"             ;use 'int64_t'
-                          ;; Prevents symbolc clashes with libesmumps
-                          "SCOTCH_RENAME"
-                          ;; XXX: Causes invalid frees in superlu-dist tests
-                          ;; "SCOTCH_PTHREAD"
-                          ;; "SCOTCH_PTHREAD_NUMBER=2"
-                          "restrict=__restrict"
-                          ))))#t))
-           (delete 'check)))))
-     (synopsis
-      "Programs and libraries for graph algorithms (shared libraries version)")))
-
 (define-public pt-scotch
-  (package (inherit scotch)
+  (package
+    (inherit scotch)
     (name "pt-scotch")
     (propagated-inputs
-     (list openmpi))           ;Headers include MPI headers
+     (list openmpi))                              ;headers include MPI headers
     (arguments
      (substitute-keyword-arguments (package-arguments scotch)
-       ((#:phases scotch-phases)
-        `(modify-phases ,scotch-phases
-           (replace
-            'build
-            (lambda _
-              (invoke "make" (format #f "-j~a" (parallel-job-count))
-                      "ptscotch" "ptesmumps")
-
-              ;; Install the serial metis compatibility library
-              (invoke "make" "-C" "libscotchmetis" "install")))
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON"))
+       ((#:phases phases '%standard-phases)
+        `(modify-phases ,phases
            (add-before 'check 'mpi-setup
-	     ,%openmpi-setup)
-           (replace 'check
-             (lambda _
-               (invoke "make" "ptcheck")))))))
+             ,%openmpi-setup)))))
     (synopsis "Programs and libraries for graph algorithms (with MPI)")))
 
 (define-public pt-scotch32
-  (package (inherit scotch32)
+  (package
+    (inherit pt-scotch)
     (name "pt-scotch32")
     (propagated-inputs
      (list openmpi))                     ;headers include MPI headers
     (arguments
-     (substitute-keyword-arguments (package-arguments scotch32)
-       ((#:phases scotch32-phases)
-        `(modify-phases ,scotch32-phases
-           (replace 'build
-             (lambda _
-               (invoke "make" (format #f "-j~a" (parallel-job-count))
-                       "ptscotch" "ptesmumps")
-               ;; Install the serial metis compatibility library
-               (invoke "make" "-C" "libscotchmetis" "install")))
-           (add-before 'check 'mpi-setup
-	     ,%openmpi-setup)
-           (replace 'check
-             (lambda _
-               (invoke "make" "ptcheck")))))))
+     (substitute-keyword-arguments (package-arguments pt-scotch)
+       ((#:configure-flags flags ''())
+        ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON"
+           "-DCMAKE_C_FLAGS=-DINTSIZE32=1"))))
     (synopsis
      "Programs and libraries for graph algorithms (with MPI and 32-bit integers)")))
 
-(define-public pt-scotch-shared
-  (package (inherit scotch-shared)
-    (name "pt-scotch-shared")
-    (propagated-inputs
-     (list openmpi))           ;Headers include MPI headers
-    (arguments
-     (substitute-keyword-arguments (package-arguments scotch-shared)
-       ((#:phases scotch-shared-phases)
-        `(modify-phases ,scotch-shared-phases
-           (replace
-            'build
-            (lambda _
-              (invoke "make" (format #f "-j~a" (parallel-job-count))
-                      "ptscotch" "ptesmumps")
+(define-public scotch-shared
+  ;; There used to be separate shared library variants while the default would
+  ;; provide .a files including PIC objects.  With the switch to CMake, .a
+  ;; files contain non-PIC objects, which breaks some users, and switching to
+  ;; shared libraries by default seems to make more sense, as discussed here:
+  ;; <https://issues.guix.gnu.org/47619#2>.
+  (deprecated-package "scotch-shared" scotch))
 
-              ;; Install the serial metis compatibility library
-              (invoke "make" "-C" "libscotchmetis" "install")))
-           (add-before 'check 'mpi-setup
-             ,%openmpi-setup)))))
-    (synopsis "Graph algorithms (shared libraries version, with MPI)")))
+(define-public pt-scotch-shared
+  (deprecated-package "pt-scotch-shared" pt-scotch))
 
 
 (define-public metis