derivations: Add 'substitution-oracle' and use it.
authorLudovic Courtès <ludo@gnu.org>
Fri, 9 Jan 2015 23:39:59 +0000 (00:39 +0100)
committerLudovic Courtès <ludo@gnu.org>
Fri, 9 Jan 2015 23:39:59 +0000 (00:39 +0100)
commite9651e39b315035eb9e87888155f8d6e33ef0567
tree55f76cd433d53d58130e654ae949977d787ced55
parent0b6af195fe7476a15e498b24c67f9d8f6080a400
derivations: Add 'substitution-oracle' and use it.

This makes 'guix environment PACKAGE' significantly faster when
substitutes are enabled.  Before that, it would lead to many invocations
of 'guix substitute-binary', one per 'derivation-prerequisites-to-build'
call.  Now, all these are replaced by a single invocation.

* guix/derivations.scm (derivation-output-paths, substitution-oracle):
  New procedures.
  (derivation-prerequisites-to-build): Replace #:use-substitutes? with
  #:substitutable?.  Remove the local 'derivation-output-paths' and
  'substitutable?'.
* guix/ui.scm (show-what-to-build): Add 'substitutable?'.  Pass it to
  'derivation-prerequisites-to-build'.
  [built-or-substitutable?]: Use it instead of 'has-substitutes?'.
* tests/derivations.scm ("derivation-prerequisites-to-build and
  substitutes"): Use #:substitutable? instead of #:use-substitutes?.
guix/derivations.scm
guix/ui.scm
tests/derivations.scm