utils: `set-path-environment-variable' calls `unsetenv' for empty values.

* guix/build/utils.scm (set-path-environment-variable): When VALUE is
  the empty string, call `unsetenv' instead of `setenv'.
* gnu/packages/guile.scm (guile-2.0)[arguments]: Remove `unsetenv'
  trick.
This commit is contained in:
Ludovic Courtès 2013-06-22 16:42:46 +02:00
parent ee26820636
commit b15669f37d
2 changed files with 11 additions and 14 deletions

View File

@ -142,17 +142,6 @@ extensible. It supports many SRFIs.")
`(#:phases (alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
;; By default we end up with GUILE_LOAD_PATH="" and
;; GUILE_LOAD_COMPILED_PATH="". But that is equivalent to
;; ".", and breaks the build system when cross-compiling.
;; Thus, make sure they are unset.
;; TODO: Eventually fix `set-path-environment-variable'
;; for that case.
,@(if (%current-target-system)
'((unsetenv "GUILE_LOAD_PATH")
(unsetenv "GUILE_LOAD_COMPILED_PATH"))
'())
;; Tell (ice-9 popen) the file name of Bash.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "module/ice-9/popen.scm"

View File

@ -248,9 +248,17 @@ SEPARATOR-separated path accordingly. Example:
"
(let* ((path (search-path-as-list sub-directories input-dirs))
(value (list->search-path-as-string path separator)))
(if (string-null? value)
(begin
;; Never set ENV-VAR to an empty string because often, the empty
;; string is equivalent to ".". This is the case for
;; GUILE_LOAD_PATH in Guile 2.0, for instance.
(unsetenv env-var)
(format #t "environment variable `~a' unset~%" env-var))
(begin
(setenv env-var value)
(format #t "environment variable `~a' set to `~a'~%"
env-var value)))
env-var value)))))
(define (which program)
"Return the complete file name for PROGRAM as found in $PATH, or #f if