gnu: Add scotch and pt-scotch with shared libraries

* gnu/packages/maths.scm (scotch-shared, pt-scotch-shared): New variables.

Signed-off-by: Leo Famulari <leo@famulari.name>
This commit is contained in:
Franck Pérignon 2021-04-06 11:20:00 +00:00 committed by Leo Famulari
parent 1467080de4
commit 5fd046cbfd
No known key found for this signature in database
GPG key ID: 2646FA30BACA7F08

View file

@ -43,6 +43,7 @@
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -3246,6 +3247,63 @@ (define-public scotch32
(synopsis
"Programs and libraries for graph algorithms (32-bit integers)")))
(define-public scotch-shared
(package (inherit scotch)
(name "scotch-shared")
(native-inputs
`(("gcc" ,gcc)
("flex" ,flex)
("bison" ,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
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)
(name "pt-scotch")
@ -3293,6 +3351,28 @@ (define-public pt-scotch32
(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
`(("openmpi" ,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")
;; 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 metis
(package
(name "metis")