diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-04-03 11:54:01 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-04-03 22:28:04 +0200 |
commit | 8fdd410160acc717c97f9c8c8d910c71bcf9646a (patch) | |
tree | 40e0d884269f25b0a5742e7313761d64943d18e6 /gnu/packages/base.scm | |
parent | 9c4b6e5484b8a33d666029444af854989ae67803 (diff) | |
download | guix-8fdd410160acc717c97f9c8c8d910c71bcf9646a.tar guix-8fdd410160acc717c97f9c8c8d910c71bcf9646a.tar.gz |
gnu: Add 'make-ld-wrapper' procedure.
* gnu/packages/base.scm (make-ld-wrapper): New procedure. Abstracted
from...
* gnu/packages/commencement.scm (ld-wrapper-boot3): ... here. Use it.
Diffstat (limited to 'gnu/packages/base.scm')
-rw-r--r-- | gnu/packages/base.scm | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 3ff3172f0f..9eb90dca5b 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -358,6 +358,62 @@ included.") (license gpl3+) (home-page "http://www.gnu.org/software/binutils/"))) +(define* (make-ld-wrapper name #:key binutils guile bash + (guile-for-build guile)) + "Return a package called NAME that contains a wrapper for the 'ld' program +of BINUTILS, which adds '-rpath' flags to the actual 'ld' command line. The +wrapper uses GUILE and BASH." + (package + (name name) + (version "0") + (source #f) + (build-system trivial-build-system) + (inputs `(("binutils" ,binutils) + ("guile" ,guile) + ("bash" ,bash) + ("wrapper" ,(search-path %load-path + "gnu/packages/ld-wrapper.scm")))) + (arguments + `(#:guile ,guile-for-build + #:modules ((guix build utils)) + #:builder (begin + (use-modules (guix build utils) + (system base compile)) + + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (ld (string-append bin "/ld")) + (go (string-append bin "/ld.go"))) + + (setvbuf (current-output-port) _IOLBF) + (format #t "building ~s/bin/ld wrapper in ~s~%" + (assoc-ref %build-inputs "binutils") + out) + + (mkdir-p bin) + (copy-file (assoc-ref %build-inputs "wrapper") ld) + (substitute* ld + (("@GUILE@") + (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (("@BASH@") + (string-append (assoc-ref %build-inputs "bash") + "/bin/bash")) + (("@LD@") + (string-append (assoc-ref %build-inputs "binutils") + "/bin/ld"))) + (chmod ld #o555) + (compile-file ld #:output-file go))))) + (synopsis "The linker wrapper") + (description + "The linker wrapper (or 'ld-wrapper') wraps the linker to add any +missing '-rpath' flags, and to detect any misuse of libraries outside of the +store.") + (home-page "http://www.gnu.org/software/guix/") + (license gpl3+))) + +(export make-ld-wrapper) + (define-public glibc (package (name "glibc") |