From b15669f37daecd9d06e0d4b3c864ecdbb81c9b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 22 Jun 2013 16:42:46 +0200 Subject: [PATCH] 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. --- gnu/packages/guile.scm | 11 ----------- guix/build/utils.scm | 14 +++++++++++--- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index c4eca3e350..c78ab57915 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -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" diff --git a/guix/build/utils.scm b/guix/build/utils.scm index a4a82a5f8c..c0b150e016 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -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))) - (setenv env-var value) - (format #t "environment variable `~a' set to `~a'~%" - env-var value))) + (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))))) (define (which program) "Return the complete file name for PROGRAM as found in $PATH, or #f if