summaryrefslogtreecommitdiff
path: root/guix/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-03-30 22:56:38 +0100
committerLudovic Courtès <ludo@gnu.org>2013-03-30 22:57:03 +0100
commita18eda2747fa2eb962e3288066d2b1a679589ed3 (patch)
tree3622bccc9d73d6f09eb1a89be841d8faacbc32d5 /guix/packages.scm
parent5cfdb4bcac145abb4f6ce29aaf8fd46504e9e0a9 (diff)
downloadguix-patches-a18eda2747fa2eb962e3288066d2b1a679589ed3.tar
guix-patches-a18eda2747fa2eb962e3288066d2b1a679589ed3.tar.gz
packages: Add `native-search-paths' field and honor it.
* guix/packages.scm (<search-path-specification>): New record type. (search-path-specification->sexp): New procedure. (<package>)[native-search-paths]: New field. (package-derivation): Accumulate the search paths, and pass them as #:search-paths toe BUILDER. * guix/build-system/gnu.scm (gnu-build): Add #:search-paths. Compute `implicit-search-paths'. Pass #:search-paths in BUILDER. * guix/build-system/perl.scm (perl-build): Add #:search-paths, pass it to BUILDER with the search paths of PERL. * guix/build-system/cmake.scm (cmake-build): Add #:search-paths, pass it to BUILDER. * guix/build-system/trivial.scm (trivial-build): Add #:search-paths, ignore it. * guix/build/gnu-build-system.scm (set-paths): Add #:search-paths. Remove explicit settings of CPATH, LIBRARY_PATH, and PKG_CONFIG_PATH. Instead, walk SEARCH-PATHS and call `set-path-environment-variable' for them. * guix/build/perl-build-system.scm (perl-build): Remove PERL5LIB setting. * tests/packages.scm ("search paths"): New test. * gnu/packages/bootstrap.scm (%bootstrap-guile)[raw]: Add #:search-paths. (%bootstrap-gcc): Add `native-search-paths' field. * gnu/packages/perl.scm (perl): Likewise. * gnu/packages/pkg-config.scm (pkg-config): Likewise. * gnu/packages/glib.scm (intltool): Remove `arguments'. * gnu/packages/avahi.scm (avahi): Remove #:phases.
Diffstat (limited to 'guix/packages.scm')
-rw-r--r--guix/packages.scm49
1 files changed, 39 insertions, 10 deletions
diff --git a/guix/packages.scm b/guix/packages.scm
index 81f09d638e..3a6a07bbcc 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -37,6 +37,11 @@
origin-file-name
base32
+ <search-path-specification>
+ search-path-specification
+ search-path-specification?
+ search-path-specification->sexp
+
package
package?
package-name
@@ -49,6 +54,7 @@
package-native-inputs
package-propagated-inputs
package-outputs
+ package-native-search-paths
package-search-paths
package-synopsis
package-description
@@ -104,8 +110,22 @@ representation."
((_ str)
#'(nix-base32-string->bytevector str)))))
-;; A package.
+;; The specification of a search path.
+(define-record-type* <search-path-specification>
+ search-path-specification make-search-path-specification
+ search-path-specification?
+ (variable search-path-specification-variable)
+ (directories search-path-specification-directories)
+ (separator search-path-specification-separator (default ":")))
+
+(define (search-path-specification->sexp spec)
+ "Return an sexp representing SPEC, a <search-path-specification>. The sexp
+corresponds to the arguments expected by `set-path-environment-variable'."
+ (match spec
+ (($ <search-path-specification> variable directories separator)
+ `(,variable ,directories ,separator))))
+;; A package.
(define-record-type* <package>
package make-package
package?
@@ -128,10 +148,13 @@ representation."
(outputs package-outputs ; list of strings
(default '("out")))
- (search-paths package-search-paths ; list of (ENV-VAR (DIRS ...))
- (default '())) ; tuples; see
- ; `set-path-environment-variable'
- ; (aka. "setup-hook")
+
+ ; lists of
+ ; <search-path-specification>,
+ ; for native and cross
+ ; inputs
+ (native-search-paths package-native-search-paths (default '()))
+ (search-paths package-search-paths (default '()))
(synopsis package-synopsis) ; one-line description
(description package-description) ; one or two paragraphs
@@ -292,16 +315,22 @@ PACKAGE for SYSTEM."
(($ <package> name version source (= build-system-builder builder)
args inputs propagated-inputs native-inputs self-native-input?
outputs)
- ;; TODO: For `search-paths', add a builder prologue that calls
- ;; `set-path-environment-variable'.
- (let ((inputs (map expand-input
- (package-transitive-inputs package))))
+ (let* ((inputs (package-transitive-inputs package))
+ (input-drvs (map expand-input inputs))
+ (paths (delete-duplicates
+ (append-map (match-lambda
+ ((_ (? package? p) _ ...)
+ (package-native-search-paths
+ p))
+ (_ '()))
+ inputs))))
(apply builder
store (package-full-name package)
(and source
(package-source-derivation store source system))
- inputs
+ input-drvs
+ #:search-paths paths
#:outputs outputs #:system system
(args))))))))