ui: 'show-what-to-build' accepts derivation inputs.

This is a followup to f8a9f99cd6.

* guix/ui.scm (show-what-to-build)[inputs]: New variables.
[substitutable-info]: Build the derivation list from INPUTS.
Pass INPUTS to 'derivation-build-plan'.
This commit is contained in:
Ludovic Courtès 2019-06-23 18:35:26 +02:00
parent 066eeae1a1
commit d38d4ffa10
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -812,20 +812,28 @@ (define* (show-what-to-build store drv
#:key dry-run? (use-substitutes? #t)
(mode (build-mode normal)))
"Show what will or would (depending on DRY-RUN?) be built in realizing the
derivations listed in DRV using MODE, a 'build-mode' value. Return #t if
there's something to build, #f otherwise. When USE-SUBSTITUTES?, check and
report what is prerequisites are available for download."
derivations listed in DRV using MODE, a 'build-mode' value. The elements of
DRV can be either derivations or derivation inputs.
Return #t if there's something to build, #f otherwise. When USE-SUBSTITUTES?,
check and report what is prerequisites are available for download."
(define inputs
(map (match-lambda
((? derivation? drv) (derivation-input drv))
((? derivation-input? input) input))
drv))
(define substitutable-info
;; Call 'substitutation-oracle' upfront so we don't end up launching the
;; substituter many times. This makes a big difference, especially when
;; DRV is a long list as is the case with 'guix environment'.
(if use-substitutes?
(substitution-oracle store drv #:mode mode)
(substitution-oracle store (map derivation-input-derivation inputs)
#:mode mode)
(const #f)))
(let*-values (((build download)
(derivation-build-plan store
(map derivation-input drv)
(derivation-build-plan store inputs
#:mode mode
#:substitutable-info
substitutable-info))