derivations: Introduce 'read-derivation-from-file'.
authorLudovic Courtès <ludovic.courtes@inria.fr>
Mon, 12 Jun 2017 15:11:22 +0000 (17:11 +0200)
committerLudovic Courtès <ludo@gnu.org>
Mon, 12 Jun 2017 15:53:51 +0000 (17:53 +0200)
commit015f17e8b9eff97f656852180ac51c75438d7f9d
treed2fe6f9a2917aa3f2bf57e4220e23a3e7d63d8d2
parentb46712159c15f72fc28b71d17d5a7c74fcb64ed0
derivations: Introduce 'read-derivation-from-file'.

This avoids the open/fstat/close syscalls upon a cache hit that we had
with the previous idiom:

  (call-with-input-file file read-derivation)

where caching happened in 'read-derivation' itself.

* guix/derivations.scm (%read-derivation): Rename to...
(read-derivation): ... this.
(read-derivation-from-file): New procedure.
(derivation-prerequisites, substitution-oracle)
(derivation-prerequisites-to-build):
(derivation-path->output-path, derivation-path->output-paths):
(derivation-path->base16-hash, map-derivation): Use
'read-derivation-from-file' instead of (call-with-input-file …
read-derivation).
* guix/grafts.scm (item->deriver): Likewise.
* guix/scripts/build.scm (log-url, options->things-to-build): Likewise.
* guix/scripts/graph.scm (file->derivation): Remove.
(derivation-dependencies, %derivation-node-type): Use
'read-derivation-from-file' instead.
* guix/scripts/offload.scm (guix-offload): Likewise.
* guix/scripts/perform-download.scm (guix-perform-download): Likewise.
* guix/scripts/publish.scm (load-derivation): Remove.
(narinfo-string): Use 'read-derivation-from-file'.
guix/derivations.scm
guix/grafts.scm
guix/scripts/build.scm
guix/scripts/graph.scm
guix/scripts/offload.scm
guix/scripts/perform-download.scm
guix/scripts/publish.scm