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.
This commit is contained in:
parent
f4bdfe7381
commit
f77bcbc374
|
@ -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."
|
||||
|
|
|
@ -37,7 +37,8 @@
|
|||
%substitute-directory
|
||||
with-derivation-narinfo
|
||||
with-derivation-substitute
|
||||
dummy-package))
|
||||
dummy-package
|
||||
dummy-origin))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -219,6 +220,13 @@ initialized with default values, and with EXTRA-FIELDS set as specified."
|
|||
(synopsis #f) (description #f)
|
||||
(home-page #f) (license #f)))
|
||||
|
||||
(define-syntax-rule (dummy-origin extra-fields ...)
|
||||
"Return a \"dummy\" origin, with all its compulsory fields initialized with
|
||||
default values, and with EXTRA-FIELDS set as specified."
|
||||
(origin extra-fields ...
|
||||
(method #f) (uri "http://www.example.com")
|
||||
(sha256 (base32 (make-string 52 #\x)))))
|
||||
|
||||
;; Local Variables:
|
||||
;; eval: (put 'call-with-derivation-narinfo 'scheme-indent-function 1)
|
||||
;; eval: (put 'call-with-derivation-substitute 'scheme-indent-function 2)
|
||||
|
|
|
@ -155,6 +155,36 @@
|
|||
(package-transitive-supported-systems d)
|
||||
(package-transitive-supported-systems e))))
|
||||
|
||||
(let* ((o (dummy-origin))
|
||||
(u (dummy-origin))
|
||||
(i (dummy-origin))
|
||||
(a (dummy-package "a"))
|
||||
(b (dummy-package "b"
|
||||
(inputs `(("a" ,a) ("i" ,i)))))
|
||||
(c (package (inherit b) (source o)))
|
||||
(d (dummy-package "d"
|
||||
(build-system trivial-build-system)
|
||||
(source u) (inputs `(("c" ,c))))))
|
||||
(test-assert "package-direct-sources, no source"
|
||||
(null? (package-direct-sources a)))
|
||||
(test-equal "package-direct-sources, #f source"
|
||||
(list i)
|
||||
(package-direct-sources b))
|
||||
(test-equal "package-direct-sources, not input source"
|
||||
(list u)
|
||||
(package-direct-sources d))
|
||||
(test-assert "package-direct-sources"
|
||||
(let ((s (package-direct-sources c)))
|
||||
(and (= (length (pk 's-sources s)) 2)
|
||||
(member o s)
|
||||
(member i s))))
|
||||
(test-assert "package-transitive-sources"
|
||||
(let ((s (package-transitive-sources d)))
|
||||
(and (= (length (pk 'd-sources s)) 3)
|
||||
(member o s)
|
||||
(member i s)
|
||||
(member u s)))))
|
||||
|
||||
(test-equal "package-transitive-supported-systems, implicit inputs"
|
||||
%supported-systems
|
||||
|
||||
|
|
Loading…
Reference in New Issue