From 57e544e8f7f0c907bb1ea3b4432a9a3d3da57365 Mon Sep 17 00:00:00 2001 From: Eric Bavier Date: Tue, 8 Apr 2014 23:08:30 -0500 Subject: gnu: lapack: Augment library rpath * gnu/packages/maths.scm (lapack) [arguments]: New post-installation phase to augment the rpath of installed libraries. --- gnu/packages/maths.scm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'gnu') diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 351036159a..68c326752c 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -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 -- cgit v1.2.3