From 8fdd410160acc717c97f9c8c8d910c71bcf9646a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 3 Apr 2015 11:54:01 +0200 Subject: 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. --- gnu/packages/base.scm | 56 +++++++++++++++++++++++++++++++++++++++++++ gnu/packages/commencement.scm | 52 ++++------------------------------------ 2 files changed, 60 insertions(+), 48 deletions(-) (limited to 'gnu/packages') 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 @@ (define-public binutils (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") diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index b421ab08ef..766aea4bfd 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -545,54 +545,10 @@ (define-public gcc-final (define ld-wrapper-boot3 ;; A linker wrapper that uses the bootstrap Guile. - (package - (name "ld-wrapper-boot3") - (version "0") - (source #f) - (build-system trivial-build-system) - (inputs `(("binutils" ,binutils-final) - ("guile" ,%bootstrap-guile) - ("bash" ,@(assoc-ref %boot2-inputs "bash")) - ("wrapper" ,(search-path %load-path - "gnu/packages/ld-wrapper.scm")))) - (arguments - `(#:guile ,%bootstrap-guile - #: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 #f) - (license gpl3+))) + (make-ld-wrapper "ld-wrapper-boot3" + #:binutils binutils-final + #:guile %bootstrap-guile + #:bash (car (assoc-ref %boot2-inputs "bash")))) (define %boot3-inputs ;; 4th stage inputs. -- cgit v1.2.3