From 4e9f59205835e148d4329e7d77c81dccfacd4ea2 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sun, 3 May 2015 23:01:35 +0200 Subject: guix package: Introduce 'evaluate-search-paths'. * guix/scripts/package.scm (evaluate-search-paths): New procedure, with most of the code formerly in 'search-path-environment-variables'. (search-path-environment-variables): Use it. --- guix/scripts/package.scm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'guix/scripts') diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index d9bad7ba87..003f6958ef 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -379,10 +379,10 @@ an output path different than CURRENT-PATH." (with-error-to-port (%make-void-port "w") (lambda () exp))) -(define* (search-path-environment-variables entries profile - #:optional (getenv getenv)) - "Return environment variable definitions that may be needed for the use of -ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the +(define* (evaluate-search-paths search-paths directory + #:optional (getenv (const #f))) + "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY, +and return a list of variable/value pairs. Use GETENV to determine the current settings and report only settings not already effective." (define search-path-definition (match-lambda @@ -401,18 +401,26 @@ current settings and report only settings not already effective." ;; directories (see ;; .) (path (with-null-error-port - (search-path-as-list files (list profile) + (search-path-as-list files (list directory) #:type type #:pattern pattern)))) (if (every (cut member <> values) path) - #f - (format #f "export ~a=\"~a\"" - variable - (string-join path separator))))))) + #f ;VARIABLE is already set appropriately + (cons variable (string-join path separator))))))) + + (filter-map search-path-definition search-paths)) +(define* (search-path-environment-variables entries profile + #:optional (getenv getenv)) + "Return environment variable definitions that may be needed for the use of +ENTRIES, a list of manifest entries, in PROFILE. Use GETENV to determine the +current settings and report only settings not already effective." (let ((search-paths (delete-duplicates (append-map manifest-entry-search-paths entries)))) - (filter-map search-path-definition search-paths))) + (filter-map (match-lambda + ((variable . value) + (format #f "export ~a=\"~a\"" variable value))) + (evaluate-search-paths search-paths profile getenv)))) (define (display-search-paths entries profile) "Display the search path environment variables that may need to be set for -- cgit v1.2.3