guix/nix/libstore
Ludovic Courtès 9dfa20a22a
daemon: Let 'guix substitute' perform hash checks.
This way, the hash of the store item can be computed as it is restored,
thereby avoiding an additional file tree traversal ('hashPath' call)
later on in the daemon.  Consequently, it should reduce latency between
subsequent substitute downloads.

This is a followup to 5ff521452b.

* guix/scripts/substitute.scm (narinfo-hash-algorithm+value): New
procedure.
(process-substitution): Wrap INPUT into a hash input port, 'hashed', and
read from it.  Compare the actual and expected hashes, and print a
"hash-mismatch" status line when they differ.  When they match, print
not just "success" but also the nar hash and size.
* nix/libstore/build.cc (class SubstitutionGoal)[expectedHashStr]:
Remove.
(SubstitutionGoal::finished): Tokenize 'status'.  Parse it and handle
"success" and "hash-mismatch" accordingly.  Call 'hashPath' only when
the returned hash is not SHA256.
(SubstitutionGoal::handleChildOutput): Remove 'expectedHashStr'
handling.
* tests/substitute.scm ("substitute, invalid hash"): Rename to...
("substitute, invalid narinfo hash"): ... this.
("substitute, invalid hash"): New test.
2020-12-19 23:25:00 +01:00
..
.gitignore nix: Tweak .gitignore files. 2020-06-24 19:55:22 +01:00
build.cc daemon: Let 'guix substitute' perform hash checks. 2020-12-19 23:25:00 +01:00
builtins.cc daemon: Run 'guix perform-download' directly. 2019-09-08 11:49:24 +02:00
builtins.hh daemon: Allow check builds of 'builtin:download' derivations. 2017-01-11 17:06:31 +01:00
derivations.cc Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
derivations.hh Merge branch 'nix'. 2015-07-03 00:30:55 +02:00
gc.cc daemon: Handle EXDEV when moving to trash directory. 2020-06-06 15:43:35 -07:00
globals.cc daemon: Remove 'NIX_LIBEXEC_DIR'. 2019-09-08 11:49:24 +02:00
globals.hh daemon: Remove 'NIX_LIBEXEC_DIR'. 2019-09-08 11:49:24 +02:00
local-store.cc daemon: Factorize substituter agent spawning. 2020-12-08 22:30:08 +01:00
local-store.hh daemon: Factorize substituter agent spawning. 2020-12-08 22:30:08 +01:00
misc.cc daemon: Remove dead code. 2018-03-30 23:42:07 +02:00
misc.hh daemon: Remove dead code. 2018-03-30 23:42:07 +02:00
optimise-store.cc daemon: Correctly handle EMLINK corner case when deduplicating. 2020-06-25 12:29:22 +02:00
pathlocks.cc daemon: ~PathLocks(): Handle exceptions. 2016-05-31 14:25:28 +02:00
pathlocks.hh Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
references.cc Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
references.hh Merge branch 'nix' into 'master'. 2014-12-19 22:47:37 +01:00
sqlite.cc daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
sqlite.hh daemon: Improve the SQLite wrapper API. 2016-10-28 22:30:17 +02:00
store-api.cc daemon: Replace "illegal" by "invalid" in error messages. 2019-06-13 00:44:01 +02:00
store-api.hh daemon: Make 'profiles/per-user' non-world-writable. 2019-10-16 22:53:40 +02:00
worker-protocol.hh daemon: Support multiplexed build output. 2018-10-15 22:40:35 +02:00