diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-03-30 22:56:38 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-03-30 22:57:03 +0100 |
commit | a18eda2747fa2eb962e3288066d2b1a679589ed3 (patch) | |
tree | 3622bccc9d73d6f09eb1a89be841d8faacbc32d5 /guix/packages.scm | |
parent | 5cfdb4bcac145abb4f6ce29aaf8fd46504e9e0a9 (diff) | |
download | gnu-guix-a18eda2747fa2eb962e3288066d2b1a679589ed3.tar gnu-guix-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.scm | 49 |
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)))))))) |