daemon: Report hash mismatches in a cleaner way.
Suggested by Hartmut Goebel. * nix/libstore/build.cc (DerivationGoal::registerOutputs): Report hash mismatches on 3 lines for clarity. (SubstitutionGoal::finished): Likewise.master
parent
a88d41d11c
commit
f0a0b58bfa
|
@ -2449,8 +2449,11 @@ void DerivationGoal::registerOutputs()
|
||||||
Hash h2 = recursive ? hashPath(ht, actualPath).first : hashFile(ht, actualPath);
|
Hash h2 = recursive ? hashPath(ht, actualPath).first : hashFile(ht, actualPath);
|
||||||
if (h != h2)
|
if (h != h2)
|
||||||
throw BuildError(
|
throw BuildError(
|
||||||
format("output path `%1%' should have %2% hash `%3%', instead has `%4%'")
|
format("%1% hash mismatch for output path `%2%'\n"
|
||||||
% path % i->second.hashAlgo % printHash16or32(h) % printHash16or32(h2));
|
" expected: %3%\n"
|
||||||
|
" actual: %4%")
|
||||||
|
% i->second.hashAlgo % path
|
||||||
|
% printHash16or32(h) % printHash16or32(h2));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get rid of all weird permissions. This also checks that
|
/* Get rid of all weird permissions. This also checks that
|
||||||
|
@ -3096,7 +3099,9 @@ void SubstitutionGoal::finished()
|
||||||
Hash expectedHash = parseHash16or32(hashType, string(expectedHashStr, n + 1));
|
Hash expectedHash = parseHash16or32(hashType, string(expectedHashStr, n + 1));
|
||||||
Hash actualHash = hashType == htSHA256 ? hash.first : hashPath(hashType, destPath).first;
|
Hash actualHash = hashType == htSHA256 ? hash.first : hashPath(hashType, destPath).first;
|
||||||
if (expectedHash != actualHash)
|
if (expectedHash != actualHash)
|
||||||
throw SubstError(format("hash mismatch in downloaded path `%1%': expected %2%, got %3%")
|
throw SubstError(format("hash mismatch in downloaded path `%1%'\n"
|
||||||
|
" expected: %2%\n"
|
||||||
|
" actual: %3%")
|
||||||
% storePath % printHash(expectedHash) % printHash(actualHash));
|
% storePath % printHash(expectedHash) % printHash(actualHash));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue