~ruther/guix-local

df94888eca214c496b5cdf57795e03b96866c3af — Maxim Cournoyer 2 years ago 84a7b73
utils: Set $0 to basename of command in `wrap-program'.

* guix/build/utils.scm (wrap-program): Set the value of the -a option of
`exec' in the wrapper to ${0##*/} instead of $0, to use its base name instead
of the complete file name.

Fixes: https://issues.guix.gnu.org/73405
Change-Id: Iec5984d4d934c8df88a90ff653947f7d07413ae4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
1 files changed, 2 insertions(+), 2 deletions(-)

M guix/build/utils.scm
M guix/build/utils.scm => guix/build/utils.scm +2 -2
@@ 1355,7 1355,7 @@ contents:
  #!location/of/bin/bash
  export PATH=\"/gnu/.../bar/bin\"
  export CERT_PATH=\"$CERT_PATH${CERT_PATH:+:}/gnu/.../baz/certs:/qux/certs\"
  exec -a $0 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


@@ 1432,7 1432,7 @@ with definitions for VARS. If it is not, SH will be used as interpreter."
        (call-with-output-file prog-tmp
          (lambda (port)
            (format port
                    "#!~a~%~a~%exec -a \"$0\" \"~a\" \"$@\"~%"
                    "#!~a~%~a~%exec -a \"${0##*/}\" \"~a\" \"$@\"~%"
                    sh
                    (string-join (map export-variable vars/filtered) "\n")
                    (canonicalize-path wrapped-file))))