diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-02-27 00:08:04 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-02-27 00:09:30 +0100 |
commit | f307947ecc8a3427a7787a478ef7d08bdb1e72aa (patch) | |
tree | 286935a08dbd58939d47c3f7cad025de0719d91c /gnu/packages/ld-wrapper.scm | |
parent | 9cca706c2e76bddb3c04ca2ab310cd1262596232 (diff) | |
download | guix-patches-f307947ecc8a3427a7787a478ef7d08bdb1e72aa.tar guix-patches-f307947ecc8a3427a7787a478ef7d08bdb1e72aa.tar.gz |
ld-wrapper: Add '-rpath' for arguments such as 'libfoo.so.5.3'.
Suggested by Andreas Enge <andreas@enge.fr>
at <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00810.html>.
CMake command lines appear to refer to such file names.
* gnu/packages/ld-wrapper.scm (shared-library?): New procedure.
(library-files-linked): Use it.
Diffstat (limited to 'gnu/packages/ld-wrapper.scm')
-rw-r--r-- | gnu/packages/ld-wrapper.scm | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gnu/packages/ld-wrapper.scm b/gnu/packages/ld-wrapper.scm index 19856176b3..4fa2962bb9 100644 --- a/gnu/packages/ld-wrapper.scm +++ b/gnu/packages/ld-wrapper.scm @@ -104,6 +104,15 @@ exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" " (< depth %max-symlink-depth) (loop (readlink file) (+ 1 depth)))))))) +(define (shared-library? file) + ;; Return #t when FILE denotes a shared library. + (or (string-suffix? ".so" file) + (let ((index (string-contains file ".so."))) + ;; Since we cannot use regexps during bootstrap, roll our own. + (and index + (string-every (char-set-union (char-set #\.) char-set:digit) + (string-drop file (+ index 3))))))) + (define (library-files-linked args) ;; Return the file names of shared libraries explicitly linked against via ;; `-l' or with an absolute file name in ARGS. @@ -125,7 +134,7 @@ exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" " (cons full library-files)) result))) ((and (string-prefix? %store-directory argument) - (string-suffix? ".so" argument)) ;add library + (shared-library? argument)) ;add library (cons library-path (cons argument library-files))) (else |