From b9ea6c6bf4948fd15876c915febad430e3177e42 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 5 May 2015 14:10:57 +0200 Subject: environment: Use 'evaluate-search-paths'. This allows 'guix environment' to correctly handle non-directory and/or pattern search-path specifications, such as that for 'XML_CATALOG_FILES'. * guix/scripts/environment.scm (for-each-search-path): Use 'evaluate-search-paths' instead of 'search-path-as-list' & co. --- guix/scripts/environment.scm | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'guix/scripts/environment.scm') diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index 36d7beb348..cf402d3677 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson +;;; Copyright © 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,7 +26,6 @@ (define-module (guix scripts environment) #:use-module (guix search-paths) #:use-module (guix utils) #:use-module (guix monads) - #:use-module (guix build utils) #:use-module (guix scripts build) #:use-module (gnu packages) #:use-module (ice-9 format) @@ -41,25 +41,24 @@ (define (for-each-search-path proc inputs derivations pure?) Use the output paths of DERIVATIONS to build each search path. When PURE? is #t, the existing search path value is ignored. Otherwise, the existing search path value is appended." - (let ((paths (append-map (lambda (drv) - (map (match-lambda - ((_ . output) - (derivation-output-path output))) - (derivation-outputs drv))) - derivations))) + (let ((directories (append-map (lambda (drv) + (map (match-lambda + ((_ . output) + (derivation-output-path output))) + (derivation-outputs drv))) + derivations)) + (paths (cons $PATH + (delete-duplicates + (append-map package-native-search-paths + inputs))))) (for-each (match-lambda - (($ - variable directories separator) - (let* ((current (getenv variable)) - (path (search-path-as-list directories paths)) - (value (list->search-path-as-string path separator))) - (proc variable - (if (and current (not pure?)) - (string-append value separator current) - value))))) - (cons* $PATH - (delete-duplicates - (append-map package-native-search-paths inputs)))))) + ((($ variable _ sep) . value) + (let ((current (getenv variable))) + (proc variable + (if (and current (not pure?)) + (string-append value sep current) + value))))) + (evaluate-search-paths paths directories)))) ;; Protect some env vars from purification. Borrowed from nix-shell. (define %precious-variables -- cgit v1.2.3