~ruther/guix-local

f0a0b58bfa9b62de1839b980a2560618e56f9249 — Ludovic Courtès 8 years ago a88d41d
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.
1 files changed, 8 insertions(+), 3 deletions(-)

M nix/libstore/build.cc
M nix/libstore/build.cc => nix/libstore/build.cc +8 -3
@@ 2449,8 2449,11 @@ void DerivationGoal::registerOutputs()
            Hash h2 = recursive ? hashPath(ht, actualPath).first : hashFile(ht, actualPath);
            if (h != h2)
                throw BuildError(
                    format("output path `%1%' should have %2% hash `%3%', instead has `%4%'")
                    % path % i->second.hashAlgo % printHash16or32(h) % printHash16or32(h2));
                    format("%1% hash mismatch for output path `%2%'\n"
			   "  expected: %3%\n"
			   "  actual:   %4%")
                    % i->second.hashAlgo % path
		    % printHash16or32(h) % printHash16or32(h2));
        }

        /* 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 actualHash = hashType == htSHA256 ? hash.first : hashPath(hashType, destPath).first;
            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));
        }