utils: Use $0 instead of absolute path to original program in 'wrap-program'.
* guix/build/utils.scm (wrap-program): Create scripts that use $0 (which is
    usually just the base name) instead of the absolute path to the original
    program. Alternative implementation of 2ed11b3.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Closes <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19742>.
			
			
This commit is contained in:
		
							parent
							
								
									3e74dcd0bb
								
							
						
					
					
						commit
						b01f89675d
					
				
					 1 changed files with 2 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -816,7 +816,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 location/of/foo 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
 | 
			
		||||
| 
						 | 
				
			
			@ -870,11 +870,10 @@ the previous wrapper."
 | 
			
		|||
    (with-output-to-file prog-tmp
 | 
			
		||||
      (lambda ()
 | 
			
		||||
        (format #t
 | 
			
		||||
                "#!~a~%~a~%exec -a \"~a\" \"~a\" \"$@\"~%"
 | 
			
		||||
                "#!~a~%~a~%exec -a \"$0\" \"~a\" \"$@\"~%"
 | 
			
		||||
                (which "bash")
 | 
			
		||||
                (string-join (map export-variable vars)
 | 
			
		||||
                             "\n")
 | 
			
		||||
                (canonicalize-path prog)
 | 
			
		||||
                (canonicalize-path target))))
 | 
			
		||||
 | 
			
		||||
    (chmod prog-tmp #o755)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue