~ruther/guix-local

57e544e8f7f0c907bb1ea3b4432a9a3d3da57365 — Eric Bavier 12 years ago cb3da23
gnu: lapack: Augment library rpath

* gnu/packages/maths.scm (lapack) [arguments]: New post-installation
  phase to augment the rpath of installed libraries.
1 files changed, 29 insertions(+), 1 deletions(-)

M gnu/packages/maths.scm
M gnu/packages/maths.scm => gnu/packages/maths.scm +29 -1
@@ 28,6 28,7 @@
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages elf)
  #:use-module (gnu packages fltk)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages gettext)


@@ 185,12 186,18 @@ output in text, PostScript, PDF or HTML.")
        "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s"))))
    (build-system cmake-build-system)
    (home-page "http://www.netlib.org/lapack/")
    (native-inputs `(("patchelf" ,patchelf))) ;for augment-rpath
    (inputs `(("fortran" ,gfortran-4.8)
              ("python" ,python-2)))
    (arguments
     `(#:modules ((guix build cmake-build-system)
                  (guix build utils)
                  (guix build rpath)
                  (srfi srfi-1))
       #:imported-modules ((guix build cmake-build-system)
                           (guix build gnu-build-system)
                           (guix build utils)
                           (guix build rpath))
       #:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES")
       #:phases (alist-cons-before
                 'check 'patch-python


@@ 198,7 205,28 @@ output in text, PostScript, PDF or HTML.")
                   (let ((python (assoc-ref inputs "python")))
                     (substitute* "lapack_testing.py"
                       (("/usr/bin/env python") python))))
                 %standard-phases)))
                 (alist-cons-after
                  'strip 'add-libs-to-runpath
                  (lambda* (#:key inputs outputs #:allow-other-keys)
                    (let* ((out     (assoc-ref outputs "out"))
                           (fortran (assoc-ref inputs "fortran"))
                           (libc    (assoc-ref inputs "libc"))
                           (rpaths  `(,(string-append fortran "/lib64")
                                      ,(string-append fortran "/lib")
                                      ,(string-append libc "/lib")
                                      ,(string-append out "/lib"))))
                      ;; Set RUNPATH for all libraries
                      (with-directory-excursion out
                        (for-each
                         (lambda (lib)
                           (let ((lib-rpaths (file-rpath lib)))
                             (for-each
                              (lambda (dir)
                                (or (member dir lib-rpaths)
                                    (augment-rpath lib dir)))
                              rpaths)))
                         (find-files "lib" ".*so$")))))
                  %standard-phases))))
    (synopsis "Library for numerical linear algebra")
    (description
     "LAPACK is a Fortran 90 library for solving the most commonly occurring