diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2020-07-27 18:40:57 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-27 18:40:57 +0200 |
commit | 86805a2c0a25f5ceefac0d64e64ba57ace73b7f5 (patch) | |
tree | c9b28ba4c468446911f8bc5411933a334b1fe184 /src/libstore/build.cc | |
parent | a5f7d310dd10fe86b6f6aa1c2771c30f113741d4 (diff) | |
parent | 43f2bd8dc5950c38a817242884870f344a84a291 (diff) |
Merge pull request #3738 from obsidiansystems/hash-always-has-type
Hash always has a valid type
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r-- | src/libstore/build.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 109368f8a..d26f96b74 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -3737,8 +3737,8 @@ void DerivationGoal::registerOutputs() /* Check the hash. In hash mode, move the path produced by the derivation to its content-addressed location. */ Hash h2 = outputHash.method == FileIngestionMethod::Recursive - ? hashPath(*outputHash.hash.type, actualPath).first - : hashFile(*outputHash.hash.type, actualPath); + ? hashPath(outputHash.hash.type, actualPath).first + : hashFile(outputHash.hash.type, actualPath); auto dest = worker.store.makeFixedOutputPath(outputHash.method, h2, i.second.path(worker.store, drv->name).name()); @@ -3787,8 +3787,10 @@ void DerivationGoal::registerOutputs() time. The hash is stored in the database so that we can verify later on whether nobody has messed with the store. */ debug("scanning for references inside '%1%'", path); - HashResult hash; - auto references = worker.store.parseStorePathSet(scanForReferences(actualPath, worker.store.printStorePathSet(referenceablePaths), hash)); + // HashResult hash; + auto pathSetAndHash = scanForReferences(actualPath, worker.store.printStorePathSet(referenceablePaths)); + auto references = worker.store.parseStorePathSet(pathSetAndHash.first); + HashResult hash = pathSetAndHash.second; if (buildMode == bmCheck) { if (!worker.store.isValidPath(worker.store.parseStorePath(path))) continue; @@ -5010,7 +5012,7 @@ bool Worker::pathContentsGood(const StorePath & path) if (!pathExists(store.printStorePath(path))) res = false; else { - HashResult current = hashPath(*info->narHash.type, store.printStorePath(path)); + HashResult current = hashPath(info->narHash->type, store.printStorePath(path)); Hash nullHash(htSHA256); res = info->narHash == nullHash || info->narHash == current.first; } |