squashfs: use -no-hardlinks for reproducible squashfs images (#114454)
the nix store may contain hardlinks: derivations may output them directly, or users may be using store optimization which automatically hardlinks identical files in the nix store. The presence of these links are intended to be a 'transparent' optimization. However, when creating a squashfs image, the image will be different depending on whether hard links were present on the filesystem, leading to reproducibility problems. By passing '-no-hardlinks' to mksquashfs the files are stored as duplicates in the squashfs image. Since squashfs has support for duplicate files this does not lead to a larger image. For more details see https://github.com/NixOS/nixpkgs/issues/114331
This commit is contained in:
@@ -19,6 +19,10 @@ stdenv.mkDerivation {
|
||||
# This patch adds an option to pad filesystems (increasing size) in
|
||||
# exchange for better chunking / binary diff calculation.
|
||||
./4k-align.patch
|
||||
# Add -no-hardlinks option. This is a rebased version of
|
||||
# c37bb4da4a5fa8c1cf114237ba364692dd522262, can be removed
|
||||
# when upgrading to the next version after 4.4
|
||||
./0001-Mksquashfs-add-no-hardlinks-option.patch
|
||||
] ++ lib.optional stdenv.isDarwin ./darwin.patch;
|
||||
|
||||
buildInputs = [ zlib xz zstd lz4 ];
|
||||
|
||||
Reference in New Issue
Block a user