diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-05-04 14:35:31 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-05-05 00:57:35 +0200 |
commit | e42bfd236e79ff2270b4a326a5cd45858ed28376 (patch) | |
tree | 241012524d4c1bb300144d0149e2c9a49457b055 /gnu | |
parent | 55f7cd701cb6489d8c5f1b5022e6a5bf044f0361 (diff) | |
download | guix-patches-e42bfd236e79ff2270b4a326a5cd45858ed28376.tar guix-patches-e42bfd236e79ff2270b4a326a5cd45858ed28376.tar.gz |
gnu: guix: Avoid Bash wrapper.
The Bash wrapper created by 'wrap-program' creates an extra
indirection and may annoyingly emit locale warnings:
/gnu/store/…-bash-minimal-5.0.16/bin/bash: warning: setlocale: LC_ALL: cannot change locale (wtf)
This warning would typically show up when running Guix, as produced by
'guix pack guix', on a foreign distro, annihilating efforts made in
1d4ab335b22a93e01c2eb1eb3e93fc6534157040 and
8a973abc6f7eebfcd8a904bfbb99cb9f86f66ef0.
* gnu/packages/package-management.scm (guix)[arguments]: In
'wrap-program' phase, remove 'string-join' call for PATH and GOPATH.
Replace 'wrap-program' call with a 'substitute*' form. Remove (when
target ...) form.
[inputs]: Remove "bash-minimal" added in commit
38b9af7c92344a17b6680ebd2aeea14171f84a1c and no longer needed.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/package-management.scm | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 827166c938..2146754569 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -326,31 +326,38 @@ $(prefix)/etc/openrc\n"))) (open-pipe* OPEN_READ (string-append guile "/bin/guile") "-c" "(display (effective-version))"))) - (path (string-join - (map (cut string-append <> - "/share/guile/site/" - effective) - (delete #f deps*)) - ":")) - (gopath (string-join - (map (cut string-append <> - "/lib/guile/" effective - "/site-ccache") - (delete #f deps*)) - ":")) + (path (map (cut string-append <> + "/share/guile/site/" + effective) + (delete #f deps*))) + (gopath (map (cut string-append <> + "/lib/guile/" effective + "/site-ccache") + (delete #f deps*))) (locpath (string-append locales "/lib/locale"))) - (wrap-program (string-append out "/bin/guix") - `("GUILE_LOAD_PATH" ":" prefix (,path)) - `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)) - `("GUIX_LOCPATH" ":" suffix (,locpath))) - - (when target - ;; XXX Touching wrap-program rebuilds world - (let ((bash (assoc-ref inputs "bash"))) - (substitute* (string-append out "/bin/guix") - (("^#!.*/bash") (string-append "#! " bash "/bin/bash"))))) - #t))) + ;; Modify 'guix' directly instead of using + ;; 'wrap-program'. This avoids the indirection + ;; through Bash, which in turn avoids getting Bash's + ;; own locale warnings. + (substitute* (string-append out "/bin/guix") + (("!#") + (string-append + "!#\n\n" + (object->string + `(set! %load-path (append ',path %load-path))) + "\n" + (object->string + `(set! %load-compiled-path + (append ',gopath %load-compiled-path))) + "\n" + (object->string + `(let ((path (getenv "GUIX_LOCPATH"))) + (setenv "GUIX_LOCPATH" + (if path + (string-append path ":" ,locpath) + ,locpath)))) + "\n\n")))))) ;; The 'guix' executable has 'OUT/libexec/guix/guile' as ;; its shebang; that should remain unchanged, thus remove @@ -405,8 +412,7 @@ $(prefix)/etc/openrc\n"))) `(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux"))) '()) ,@(if (%current-target-system) - `(("bash" ,bash-minimal) - ("xz" ,xz)) + `(("xz" ,xz)) '()) ;; Tests also rely on these bootstrap executables. |