Hi Björn, In registerOutputs from nix/libstore/build.cc, it seems that if a check was requested (i.e., buildMode == bmCheck), an exception is thrown when the build is found to be non-deterministic. In addition, it looks like that would prevent execution from reaching the line farther down where we call worker.store.optimisePath(path), which does the deduplication when deduplication is enabled (i.e., when settings.autoOptimiseStore evaluates to true).
The current Nix source code seems to have the same structure, which suggests that perhaps the current version of the nix-daemon behaves the same way. Perhaps you could reproduce the issue in Nix and ask about it upstream? Maybe there is a good reason why Eelco changed diffoscope to ignore the links instead of changing the build.cc code to perform the deduplication. For example, maybe the work to ensure that deduplication occurs even when a check fails is more complicated and error-prone than simply updating diffoscope to ignore link counts. It couldn't hurt to ask! -- Chris
Description: PGP signature