bavier pushed a commit to branch master
in repository guix.

commit cf0ec6c46efbf303207235ede8a9828b79037fb3
Author: Eric Bavier <bav...@member.fsf.org>
Date:   Mon Jun 15 06:00:01 2015 -0500

    gnu: scotch, pt-scotch: Build esmumps libraries.
    
    * gnu/packages/maths.scm (scotch)[arguments]: Add 'build-esmumps
      phase.  Install esmumps libraries and headers in 'install phase.
      (pt-scotch)[arguments]: Build ptesmumps in 'build phase.  Add
      make parallelism.
---
 gnu/packages/maths.scm |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index a3611cf..05691b6 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -818,6 +818,7 @@ OBJ = .o
 MAKE = make
 AR = ar
 ARFLAGS = -ruv
+CAT = cat
 CCS = gcc
 CCP = mpicc
 CCD = gcc
@@ -835,10 +836,18 @@ YACC = bison -pscotchyy -y -b y
                         '("COMMON_FILE_COMPRESS_GZ"
                           "COMMON_PTHREAD"
                           "COMMON_RANDOM_FIXED_SEED"
+                          ;; Prevents symbolc clashes with libesmumps
+                          "SCOTCH_RENAME"
                           ;; XXX: Causes invalid frees in superlu-dist tests
                           ;; "SCOTCH_PTHREAD"
                           ;; "SCOTCH_PTHREAD_NUMBER=2"
                           "restrict=__restrict"))))))
+         (add-after
+          'build 'build-esmumps
+          (lambda _
+            (zero? (system* "make"
+                            (format #f "-j~a" (parallel-job-count))
+                            "esmumps"))))
          (replace
           'install
           (lambda* (#:key outputs #:allow-other-keys)
@@ -846,7 +855,14 @@ YACC = bison -pscotchyy -y -b y
               (mkdir out)
               (zero? (system* "make"
                               (string-append "prefix=" out)
-                              "install"))))))))
+                              "install"))
+              ;; esmumps files are not installed with the above
+              (for-each (lambda (f)
+                          (copy-file f (string-append out "/include/" f)))
+                        (find-files "../include" ".*esmumps.h$"))
+              (for-each (lambda (f)
+                          (copy-file f (string-append out "/lib/" f)))
+                        (find-files "../lib" "^lib.*esmumps.*"))))))))
     (home-page "http://www.labri.fr/perso/pelegrin/scotch/";)
     (synopsis "Programs and libraries for graph algorithms")
     (description "SCOTCH is a set of programs and libraries which implement
@@ -870,10 +886,11 @@ bio-chemistry.")
         `(modify-phases ,scotch-phases
            (replace
             'build
-            ;; TODO: Would like to add parallelism here
             (lambda _
               (and
-               (zero? (system* "make" "ptscotch"))
+               (zero? (system* "make"
+                               (format #f "-j~a" (parallel-job-count))
+                               "ptscotch" "ptesmumps"))
                ;; Install the serial metis compatibility library
                (zero? (system* "make" "-C" "libscotchmetis" "install")))))
            (replace

Reply via email to