summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Enge <andreas@enge.fr>2014-04-27 11:09:07 +0200
committerAndreas Enge <andreas@enge.fr>2014-04-27 11:35:26 +0200
commit06ed59825ecc0dc78d4d16d06c129e2f4879201a (patch)
tree6e0efd0e943bf012d0b1127c9d1bf7fcad96b36c
parent5d17cf8eb96e7f266c3ec8d9e512389d1875401b (diff)
downloadguix-06ed59825ecc0dc78d4d16d06c129e2f4879201a.tar.gz
guix: cmake: Add input and package libraries to the rpath, and adapt package
  definitions accordingly.

* guix/build/cmake-build-system.scm (configure): Add flags.
* gnu/packages/maths.scm (lapack): Drop special code.
* gnu/packages/ssh.scm (libssh): Drop special code.
* gnu/packages/slim.scm (slim): Drop special code and enable shared library.

Co-authored-by: Eric Bavier <bavier@member.fsf.org>
-rw-r--r--gnu/packages/maths.scm35
-rw-r--r--gnu/packages/slim.scm12
-rw-r--r--gnu/packages/ssh.scm35
-rw-r--r--guix/build/cmake-build-system.scm5
4 files changed, 14 insertions, 73 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 68c326752c..232b79b312 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;;
@@ -190,43 +190,14 @@ output in text, PostScript, PDF or HTML.")
     (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")
+     `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES")
        #:phases (alist-cons-before
                  'check 'patch-python
                  (lambda* (#:key inputs #:allow-other-keys)
                    (let ((python (assoc-ref inputs "python")))
                      (substitute* "lapack_testing.py"
                        (("/usr/bin/env python") python))))
-                 (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))))
+                  %standard-phases)))
     (synopsis "Library for numerical linear algebra")
     (description
      "LAPACK is a Fortran 90 library for solving the most commonly occurring
diff --git a/gnu/packages/slim.scm b/gnu/packages/slim.scm
index f25b070f3c..cea3748985 100644
--- a/gnu/packages/slim.scm
+++ b/gnu/packages/slim.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Guy Grant <gzg@riseup.net>
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -75,15 +76,8 @@
                       ;; "systemd".  Strip that.
                       "")))
 		 %standard-phases)
-       #:configure-flags '("-DUSE_PAM=yes" "-DUSE_CONSOLEKIT=no"
-
-                           ;; Don't build libslim.so, because then the build
-                           ;; system is unable to set the right RUNPATH on the
-                           ;; 'slim' binary.
-                           "-DBUILD_SHARED_LIBS=OFF"
-
-                           ;; Leave a valid RUNPATH upon install.
-                           "-DCMAKE_SKIP_BUILD_RPATH=ON")
+       #:configure-flags '("-DUSE_PAM=yes"
+                           "-DUSE_CONSOLEKIT=no")
        #:tests? #f))
     (home-page "http://slim.berlios.de/")
     (synopsis "Desktop-independent graphcal login manager for X11")
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index 51e1990168..c8ed3be4a7 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -53,39 +53,10 @@
                 "1jyaj9h1iglvn02hrvcchbx8ycjpj8b91h8mi459k7q5jp2xgd9b"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:configure-flags '("-DWITH_GCRYPT=ON"
-
-                           ;; Leave a valid RUNPATH upon install.
-                           "-DCMAKE_SKIP_BUILD_RPATH=ON")
+     '(#:configure-flags '("-DWITH_GCRYPT=ON")
 
        ;; TODO: Add 'CMockery' and '-DWITH_TESTING=ON' for the test suite.
-       #:tests? #f
-
-       #:modules ((guix build cmake-build-system)
-                  (guix build utils)
-                  (guix build rpath))
-       #:imported-modules ((guix build gnu-build-system)
-                           (guix build cmake-build-system)
-                           (guix build utils)
-                           (guix build rpath))
-
-       #:phases (alist-cons-after
-                 'install 'augment-runpath
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; libssh_threads.so NEEDs libssh.so, so add $libdir to its
-                   ;; RUNPATH.
-                   (define (dereference file)
-                     (let ((target (false-if-exception (readlink file))))
-                       (if target
-                           (dereference target)
-                           file)))
-
-                   (let* ((out (assoc-ref outputs "out"))
-                          (lib (string-append out "/lib")))
-                     (with-directory-excursion lib
-                       (augment-rpath (dereference "libssh_threads.so")
-                                      lib))))
-                 %standard-phases)))
+       #:tests? #f))
     (inputs `(("zlib" ,zlib)
                ;; Link against an older gcrypt, because libssh tries to access
                ;; fields of 'gcry_thread_cbs' that are now private:
diff --git a/guix/build/cmake-build-system.scm b/guix/build/cmake-build-system.scm
index 75998568bc..144552e8de 100644
--- a/guix/build/cmake-build-system.scm
+++ b/guix/build/cmake-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
+;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -48,6 +49,10 @@
 
     (let ((args `(,srcdir
                   ,(string-append "-DCMAKE_INSTALL_PREFIX=" out)
+                  ;; add input libraries to rpath
+                  "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
+                  ;; add (other) libraries of the project itself to rpath
+                  ,(string-append "-DCMAKE_INSTALL_RPATH=" out "/lib")
                   ,@configure-flags)))
       (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
       (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH"))