gnu: lapack: Augment library rpath

* gnu/packages/maths.scm (lapack) [arguments]: New post-installation
  phase to augment the rpath of installed libraries.
This commit is contained in:
Eric Bavier 2014-04-08 23:08:30 -05:00
parent cb3da2339a
commit 57e544e8f7

View file

@ -28,6 +28,7 @@ (define-module (gnu packages maths)
#: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 @@ (define-public lapack
"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 @@ (define-public lapack
(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