aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/build/gnu-build-system.scm60
1 files changed, 28 insertions, 32 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index c57bc60d24..112b34cd4d 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -49,38 +49,34 @@
(define* (set-paths #:key inputs (path-exclusions '())
#:allow-other-keys)
- (let ((inputs (map cdr inputs)))
- (set-path-environment-variable "PATH" '("bin")
- (remove (cute member <>
- (or (assoc-ref path-exclusions
- "PATH")
- '()))
- inputs))
- (set-path-environment-variable "CPATH" '("include")
- (remove (cute member <>
- (or (assoc-ref path-exclusions
- "CPATH")
- '()))
- inputs))
- (set-path-environment-variable "LIBRARY_PATH" '("lib" "lib64")
- (remove (cute member <>
- (or (assoc-ref path-exclusions
- "LIBRARY_PATH")
- '()))
- inputs))
-
- ;; FIXME: Eventually move this to the `search-paths' field of the
- ;; `pkg-config' package.
- (set-path-environment-variable "PKG_CONFIG_PATH"
- '("lib/pkgconfig" "lib64/pkgconfig")
- (remove (cute member <>
- (or (assoc-ref path-exclusions
- "PKG_CONFIG_PATH")
- '()))
- inputs))
-
- ;; Dump the environment variables as a shell script, for handy debugging.
- (system "export > environment-variables")))
+ (define (relevant-input-directories env-var)
+ ;; Return the subset of INPUTS that should be considered when setting
+ ;; ENV-VAR.
+ (match (assoc-ref path-exclusions env-var)
+ (#f
+ (map cdr inputs))
+ ((excluded ...)
+ (filter-map (match-lambda
+ ((name . dir)
+ (and (not (member name excluded))
+ dir)))
+ inputs))))
+
+ (set-path-environment-variable "PATH" '("bin")
+ (relevant-input-directories "PATH"))
+ (set-path-environment-variable "CPATH" '("include")
+ (relevant-input-directories "CPATH"))
+ (set-path-environment-variable "LIBRARY_PATH" '("lib" "lib64")
+ (relevant-input-directories "LIBRARY_PATH"))
+
+ ;; FIXME: Eventually move this to the `search-paths' field of the
+ ;; `pkg-config' package.
+ (set-path-environment-variable "PKG_CONFIG_PATH"
+ '("lib/pkgconfig" "lib64/pkgconfig")
+ (relevant-input-directories "PKG_CONFIG_PATH"))
+
+ ;; Dump the environment variables as a shell script, for handy debugging.
+ (system "export > environment-variables"))
(define* (unpack #:key source #:allow-other-keys)
(and (zero? (system* "tar" "xvf" source))