diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-12-14 11:54:12 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-12-14 11:54:12 +0100 |
commit | 2ed11b3a3e05549ed6ef8a604464f424c0eeae1c (patch) | |
tree | 6ec326d39b9ec1b05574b419638bf36f02e8e17a /guix/build | |
parent | c809ec94d11f1c7e23cccb988dfb1412aff72636 (diff) | |
download | gnu-guix-2ed11b3a3e05549ed6ef8a604464f424c0eeae1c.tar gnu-guix-2ed11b3a3e05549ed6ef8a604464f424c0eeae1c.tar.gz |
utils: Change 'wrap-program' to preserve the original argv[0].
Suggested by Mark H Weaver <mhw@netris.org>
in <http://bugs.gnu.org/19138>.
* guix/build/utils.scm (wrap-program): Change wrapper to use "exec -a
PROG" instead of just "exec".
Diffstat (limited to 'guix/build')
-rw-r--r-- | guix/build/utils.scm | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/guix/build/utils.scm b/guix/build/utils.scm index be91fb467b..9b1e098c6b 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -762,7 +762,7 @@ contents: #!location/of/bin/bash export PATH=\"/gnu/.../bar/bin\" export CERT_PATH=\"$CERT_PATH${CERT_PATH:+:}/gnu/.../baz/certs:/qux/certs\" - exec location/of/.foo-real + exec -a location/of/foo 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 @@ -786,6 +786,7 @@ the previous wrapper." (copy-file prog prog-real) prog-real) (wrapper-file-name number))) + (let* ((number (next-wrapper-number)) (target (wrapper-target number)) (wrapper (wrapper-file-name (1+ number))) @@ -815,10 +816,11 @@ the previous wrapper." (with-output-to-file prog-tmp (lambda () (format #t - "#!~a~%~a~%exec \"~a\" \"$@\"~%" + "#!~a~%~a~%exec -a \"~a\" \"~a\" \"$@\"~%" (which "bash") (string-join (map export-variable vars) "\n") + (canonicalize-path prog) (canonicalize-path target)))) (chmod prog-tmp #o755) |