forked from lix-project/lix
Merge pull request #2004 from dtzWill/feature/improved-store-mismatch-errors
download.cc: improve error for hash mismatch, fixup cache hits w/diverted store
This commit is contained in:
commit
0cb1e52052
|
@ -632,7 +632,7 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
|
||||||
if (expectedHash) {
|
if (expectedHash) {
|
||||||
expectedStorePath = store->makeFixedOutputPath(unpack, expectedHash, name);
|
expectedStorePath = store->makeFixedOutputPath(unpack, expectedHash, name);
|
||||||
if (store->isValidPath(expectedStorePath))
|
if (store->isValidPath(expectedStorePath))
|
||||||
return expectedStorePath;
|
return store->toRealPath(expectedStorePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
Path cacheDir = getCacheDir() + "/nix/tarballs";
|
Path cacheDir = getCacheDir() + "/nix/tarballs";
|
||||||
|
@ -726,8 +726,13 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
|
||||||
storePath = unpackedStorePath;
|
storePath = unpackedStorePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (expectedStorePath != "" && storePath != expectedStorePath)
|
if (expectedStorePath != "" && storePath != expectedStorePath) {
|
||||||
throw nix::Error("store path mismatch in file downloaded from '%s'", url);
|
Hash gotHash = unpack
|
||||||
|
? hashPath(expectedHash.type, store->toRealPath(storePath)).first
|
||||||
|
: hashFile(expectedHash.type, store->toRealPath(storePath));
|
||||||
|
throw nix::Error("hash mismatch in file downloaded from '%s': expected hash '%s', got '%s'",
|
||||||
|
url, expectedHash.to_string(), gotHash.to_string());
|
||||||
|
}
|
||||||
|
|
||||||
return store->toRealPath(storePath);
|
return store->toRealPath(storePath);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue