diff options
author | Eric Bavier <bavier@member.fsf.org> | 2015-04-24 07:57:51 -0500 |
---|---|---|
committer | Eric Bavier <bavier@member.fsf.org> | 2015-05-02 23:15:40 -0500 |
commit | f77bcbc374bb94272c57508dc04fb8599b56a9d8 (patch) | |
tree | 0600ecce1018ce385941be46ec446fb4c04a305d /guix/packages.scm | |
parent | f4bdfe7381e91c4a7eb71ef31ca889e36574b889 (diff) |
guix: packages: Add package-direct-sources and package-transitive-sources.
* guix/tests.scm (dummy-origin): New syntax.
* guix/packages.scm (package-direct-sources)
(package-transitive-sources): New procedures.
* tests/packages.scm ("package-direct-sources, no source")
("package-direct-sources, #f source")
("package-direct-sources, not input source", "package-direct-sources")
("package-transitive-sources"): Test them.
Diffstat (limited to 'guix/packages.scm')
-rw-r--r-- | guix/packages.scm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index b7a1979a7d..d7fced8384 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -83,6 +83,8 @@ package-location package-field-location + package-direct-sources + package-transitive-sources package-direct-inputs package-transitive-inputs package-transitive-target-inputs @@ -540,6 +542,28 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." ((input rest ...) (loop rest (cons input result)))))) +(define (package-direct-sources package) + "Return all source origins associated with PACKAGE; including origins in +PACKAGE's inputs." + `(,@(or (and=> (package-source package) list) '()) + ,@(filter-map (match-lambda + ((_ (? origin? orig) _ ...) + orig) + (_ #f)) + (package-direct-inputs package)))) + +(define (package-transitive-sources package) + "Return PACKAGE's direct sources, and their direct sources, recursively." + (delete-duplicates + (concatenate (filter-map (match-lambda + ((_ (? origin? orig) _ ...) + (list orig)) + ((_ (? package? p) _ ...) + (package-direct-sources p)) + (_ #f)) + (bag-transitive-inputs + (package->bag package)))))) + (define (package-direct-inputs package) "Return all the direct inputs of PACKAGE---i.e, its direct inputs along with their propagated inputs." |