From c47f3fc13562d82edfd2d47342574154c452843a Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 4 May 2021 14:35:31 +0200 Subject: gnu: guix: Avoid Bash wrapper. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- gnu/packages/package-management.scm | 56 ++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 0add8f4220..56b436c6f8 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. -- cgit v1.2.3