Ludovic Courtès <[email protected]> writes: > On closer inspection, I see two issues: > > (define (packages->transitive-inputs packages) > "Return a list of the transitive inputs for all PACKAGES." > (define (transitive-inputs package) > (filter-map (match-lambda > ((_ (? package? package)) package) > (_ #f)) ; <---- ! > (bag-transitive-inputs > (package->bag package)))) > (delete-duplicates > (append-map transitive-inputs packages))) > > Here only inputs of the form ("foo" PKG) are considered; things like > ("glib" ,glib "bin") are discarded. > > (define (for-each-search-path proc inputs derivations pure?) > (let ((paths (map derivation->output-path derivations))) ; <-- ! > [...] > > Above, ‘derivation->output-path’ considers only the “out” output, > ignoring others if they are needed.
Here's a patch. WDYT?
>From 9609806fb78557d74cf5b3fb47802898ef9d1ecf Mon Sep 17 00:00:00 2001 From: David Thompson <[email protected]> Date: Thu, 29 Jan 2015 17:53:17 -0500 Subject: [PATCH] guix: environment: Consider all package outputs. * guix/scripts/environment.scm (for-each-search-path): Iterate over all derivation output paths. (packages->transitive-inputs): Process inputs that specify an output, too. --- guix/scripts/environment.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm index ffa3a09..bb2ce53 100644 --- a/guix/scripts/environment.scm +++ b/guix/scripts/environment.scm @@ -40,7 +40,12 @@ Use the output paths of DERIVATIONS to build each search path. When PURE? is #t, the existing search path value is ignored. Otherwise, the existing search path value is appended." - (let ((paths (map derivation->output-path derivations))) + (let ((paths (append-map (lambda (drv) + (map (match-lambda + ((_ . output) + (derivation-output-path output))) + (derivation-outputs drv))) + derivations))) (for-each (match-lambda (($ <search-path-specification> variable directories separator) @@ -177,7 +182,9 @@ packages." "Return a list of the transitive inputs for all PACKAGES." (define (transitive-inputs package) (filter-map (match-lambda - ((_ (? package? package)) package) + ((or (_ (? package? package)) + (_ (? package? package) _)) + package) (_ #f)) (bag-transitive-inputs (package->bag package)))) -- 2.1.4
-- David Thompson Web Developer - Free Software Foundation - http://fsf.org GPG Key: 0FF1D807 Support the FSF: https://fsf.org/donate
