utils: Use $0 instead of absolute path to original program in 'wrap-program'.

* guix/build/utils.scm (wrap-program): Create scripts that use $0 (which is
    usually just the base name) instead of the absolute path to the original
    program. Alternative implementation of 2ed11b3.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>

Closes <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19742>.
This commit is contained in:
Andreas Enge 2015-02-15 17:14:53 +01:00
parent 3e74dcd0bb
commit b01f89675d

View File

@ -816,7 +816,7 @@ (define* (wrap-program prog #:rest vars)
#!location/of/bin/bash
export PATH=\"/gnu/.../bar/bin\"
export CERT_PATH=\"$CERT_PATH${CERT_PATH:+:}/gnu/.../baz/certs:/qux/certs\"
exec -a location/of/foo location/of/.foo-real \"$@\"
exec -a $0 location/of/.foo-real \"$@\"
This is useful for scripts that expect particular programs to be in $PATH, for
programs that expect particular shared libraries to be in $LD_LIBRARY_PATH, or
@ -870,11 +870,10 @@ (define (export-variable lst)
(with-output-to-file prog-tmp
(lambda ()
(format #t
"#!~a~%~a~%exec -a \"~a\" \"~a\" \"$@\"~%"
"#!~a~%~a~%exec -a \"$0\" \"~a\" \"$@\"~%"
(which "bash")
(string-join (map export-variable vars)
"\n")
(canonicalize-path prog)
(canonicalize-path target))))
(chmod prog-tmp #o755)