aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-03 23:01:35 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-04 00:24:21 +0200
commit4e9f59205835e148d4329e7d77c81dccfacd4ea2 (patch)
tree9a3d494445b223a05f6d6f4e2ec250918a760b84
parent3badccaa7368fd2acc640b48c1dd3c1c2ae32500 (diff)
downloadguix-4e9f59205835e148d4329e7d77c81dccfacd4ea2.tar
guix-4e9f59205835e148d4329e7d77c81dccfacd4ea2.tar.gz
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.
-rw-r--r--guix/scripts/package.scm28
1 files changed, 18 insertions, 10 deletions
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
;; <http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00269.html>.)
(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