guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/18: utils: Allow overriding the shell interpreter in ‘wrap-program’.


From: guix-commits
Subject: 01/18: utils: Allow overriding the shell interpreter in ‘wrap-program’.
Date: Fri, 4 Jun 2021 17:29:20 -0400 (EDT)

civodul pushed a commit to branch core-updates
in repository guix.

commit 8b0899963faa3b04ed09192ac58db0a711c6a654
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Mon May 31 18:22:31 2021 +0200

    utils: Allow overriding the shell interpreter in ‘wrap-program’.
    
    Previously, when creating new wrappers, 'wrap-program' would search
    for an interpreter to use in PATH. However, this is incorrect when
    cross-compiling. Allow overriding the shell interpreter to use,
    via an optional keyword argument #:sh.
    
    In time, when all users of 'wrap-program' have been corrected,
    this keyword argument can be made mandatory.
    
    * guix/build/utils.scm (wrap-program): Introduce a #:sh keyword
      argument, defaulting to (which "sh"). Use this keyword argument.
    
    Partially-Fixes: <https://issues.guix.gnu.org/47869>
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 guix/build/utils.scm | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index dbfc0a9..c6731b3 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1234,7 +1235,7 @@ known as `nuke-refs' in Nixpkgs."
          (and (string-prefix? "." base)
               (string-suffix? "-real" base)))))
 
-(define* (wrap-program prog #:rest vars)
+(define* (wrap-program prog #:key (sh (which "bash")) #:rest vars)
   "Make a wrapper for PROG.  VARS should look like this:
 
   '(VARIABLE DELIMITER POSITION LIST-OF-DIRECTORIES)
@@ -1261,7 +1262,12 @@ programs that expect particular shared libraries to be 
in $LD_LIBRARY_PATH, or
 modules in $GUILE_LOAD_PATH, etc.
 
 If PROG has previously been wrapped by 'wrap-program', the wrapper is extended
-with definitions for VARS."
+with definitions for VARS. If it is not, SH will be used as interpreter."
+  (define vars/filtered
+    (match vars
+      ((#:sh _ . vars) vars)
+      (vars vars)))
+
   (define wrapped-file
     (string-append (dirname prog) "/." (basename prog) "-real"))
 
@@ -1315,7 +1321,7 @@ with definitions for VARS."
         (for-each (lambda (var)
                     (display (export-variable var) port)
                     (newline port))
-                  vars)
+                  vars/filtered)
         (display last port)
         (close-port port))
 
@@ -1327,8 +1333,8 @@ with definitions for VARS."
           (lambda (port)
             (format port
                     "#!~a~%~a~%exec -a \"$0\" \"~a\" \"$@\"~%"
-                    (which "bash")
-                    (string-join (map export-variable vars) "\n")
+                    sh
+                    (string-join (map export-variable vars/filtered) "\n")
                     (canonicalize-path wrapped-file))))
 
         (chmod prog-tmp #o755)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]