me
/
guix
Archived
1
0
Fork 0

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.
Ludovic Courtès 2022-02-15 11:46:53 +01:00 committed by Ludovic Courtès
parent 64fcf9508a
commit d4709d78c3
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 52 additions and 219 deletions

View File

@ -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