1aa19b24b2
The flag ‘--check’ to ‘nix-store -r’ or ‘nix-build’ will cause Nix to redo the build of a derivation whose output paths are already valid. If the new output differs from the original output, an error is printed. This makes it easier to test if a build is deterministic. (Obviously this cannot catch all sources of non-determinism, but it catches the most common one, namely the current time.) For example: $ nix-build '<nixpkgs>' -A patchelf ... $ nix-build '<nixpkgs>' -A patchelf --check error: derivation `/nix/store/1ipvxsdnbhl1rw6siz6x92s7sc8nwkkb-patchelf-0.6' may not be deterministic: hash mismatch in output `/nix/store/4pc1dmw5xkwmc6q3gdc9i5nbjl4dkjpp-patchelf-0.6.drv' The --check build fails if not all outputs are valid. Thus the first call to nix-build is necessary to ensure that all outputs are valid. The current outputs are left untouched: the new outputs are either put in a chroot or diverted to a different location in the store using hash rewriting. |
||
---|---|---|
.. | ||
build-remote.pl.in | ||
copy-from-other-stores.pl.in | ||
copying-collector.pl | ||
download-from-binary-cache.pl.in | ||
download-using-manifests.pl.in | ||
find-runtime-roots.pl.in | ||
install-nix-from-closure.sh | ||
local.mk | ||
nix-build.in | ||
nix-channel.in | ||
nix-collect-garbage.in | ||
nix-copy-closure.in | ||
nix-generate-patches.in | ||
nix-http-export.cgi.in | ||
nix-install-package.in | ||
nix-prefetch-url.in | ||
nix-profile.sh.in | ||
nix-pull.in | ||
nix-push.in | ||
nix-reduce-build.in | ||
remove-patches.pl | ||
show-duplication.pl |