The expected and the obtained path are now printed as part of the error message, making comparing them easier when they're both at hand. The extra rethrow for the hash-mismatch exception in the bmCheck case has been removed, allowing the path to be registered as in the non-check case. This makes having both paths at hand a lot more likely! The determinism check logic was incorrect for content-addressed paths, since it only ever tried to compare the path produced, even if this was not the path expected (in the case of fixed-output derivations) or the path previously produced (in the case of non-fixed CA derivations). This made little sense, because that would always be the same path if it exists! The determinism check is therefore now bypassed for CA paths. Having a correct determinism check for non-fixed CA derivations and running the diff hook for fixed-output derivations would be nice, but feels out of scope and bypassing the inapplicable logic isn't a regression from the previous behaviour. Change-Id: I5fc14fb477c8c7d2f5bdedad5591af916f72b128
617 B
617 B
synopsis, issues, cls, category, credits
| synopsis | issues | cls | category | credits | |
|---|---|---|---|---|---|
| Better debuggability on fixed-output hash mismatches | Improvements |
|
Fixed-output derivation hash mismatch error messages will now include the path that was
produced unexpectedly, and this path will be registered as valid even if --check
(nix-store, nix-build) or --rebuild (nix build) was passed. This makes comparing
the expected path with the obtained path easier, and is useful for debugging when
upstreams modify previously-published releases or when changes in fixed-output
derivations' dependencies affect their output unexpectedly.