derivations: Add 'derivation-input-derivation'.

* guix/derivations.scm (derivation-input-derivation): New procedure.
(derivation-prerequisites): Use it.
This commit is contained in:
Ludovic Courtès 2019-06-19 21:49:22 +02:00
parent 74247b80e5
commit 2ef22a9f37
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -62,6 +62,7 @@ (define-module (guix derivations)
<derivation-input>
derivation-input?
derivation-input-path
derivation-input-derivation
derivation-input-sub-derivations
derivation-input-output-paths
valid-derivation-input?
@ -152,6 +153,10 @@ (define-immutable-record-type <derivation-input>
(path derivation-input-path) ; store path
(sub-derivations derivation-input-sub-derivations)) ; list of strings
(define (derivation-input-derivation input)
"Return the <derivation> object INPUT refers to."
(read-derivation-from-file (derivation-input-path input)))
(set-record-type-printer! <derivation>
(lambda (drv port)
(format port "#<derivation ~a => ~a ~a>"
@ -243,9 +248,7 @@ (define* (derivation-prerequisites drv #:optional (cut? (const #f)))
(fold2 loop
(append inputs result)
(fold set-insert input-set inputs)
(map (lambda (i)
(read-derivation-from-file (derivation-input-path i)))
inputs)))))
(map derivation-input-derivation inputs)))))
(define (offloadable-derivation? drv)
"Return true if DRV can be offloaded, false otherwise."