Merge pull request #2574 from zimbatm/multi-line-expected-sha256

libstore: improve hash mismatch error messages
This commit is contained in:
Eelco Dolstra 2018-12-12 17:45:11 +01:00 committed by GitHub
commit 800cd55ab7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 6 deletions

View file

@ -3129,8 +3129,8 @@ void DerivationGoal::registerOutputs()
/* Throw an error after registering the path as /* Throw an error after registering the path as
valid. */ valid. */
delayedException = std::make_exception_ptr( delayedException = std::make_exception_ptr(
BuildError("fixed-output derivation produced path '%s' with %s hash '%s' instead of the expected hash '%s'", BuildError("hash mismatch in fixed-output derivation '%s':\n wanted: %s\n got: %s",
dest, printHashType(h.type), printHash16or32(h2), printHash16or32(h))); dest, h.to_string(), h2.to_string()));
Path actualDest = worker.store.toRealPath(dest); Path actualDest = worker.store.toRealPath(dest);

View file

@ -881,8 +881,8 @@ Path Downloader::downloadCached(ref<Store> store, const string & url_, bool unpa
Hash gotHash = unpack Hash gotHash = unpack
? hashPath(expectedHash.type, store->toRealPath(storePath)).first ? hashPath(expectedHash.type, store->toRealPath(storePath)).first
: hashFile(expectedHash.type, store->toRealPath(storePath)); : hashFile(expectedHash.type, store->toRealPath(storePath));
throw nix::Error("hash mismatch in file downloaded from '%s': got hash '%s' instead of the expected hash '%s'", throw nix::Error("hash mismatch in file downloaded from '%s':\n wanted: %s\n got: %s",
url, gotHash.to_string(), expectedHash.to_string()); url, expectedHash.to_string(), gotHash.to_string());
} }
return store->toRealPath(storePath); return store->toRealPath(storePath);

View file

@ -1022,11 +1022,11 @@ void LocalStore::addToStore(const ValidPathInfo & info, Source & source,
auto hashResult = hashSink.finish(); auto hashResult = hashSink.finish();
if (hashResult.first != info.narHash) if (hashResult.first != info.narHash)
throw Error("hash mismatch importing path '%s'; expected hash '%s', got '%s'", throw Error("hash mismatch importing path '%s';\n wanted: %s\n got: %s",
info.path, info.narHash.to_string(), hashResult.first.to_string()); info.path, info.narHash.to_string(), hashResult.first.to_string());
if (hashResult.second != info.narSize) if (hashResult.second != info.narSize)
throw Error("size mismatch importing path '%s'; expected %s, got %s", throw Error("size mismatch importing path '%s';\n wanted: %s\n got: %s",
info.path, info.narSize, hashResult.second); info.path, info.narSize, hashResult.second);
autoGC(); autoGC();