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

Attachment: signature.asc
Description: PGP signature

Reply via email to