Merge pull request #14711 from puffnfresh/bug/docker-nondeterminism

dockerTools: make tars deterministic

Changed files
+5 -5
pkgs
build-support
docker
+5 -5
pkgs/build-support/docker/default.nix
···
postMount = ''
echo Packing raw image
-
tar -C mnt -cf $out .
+
tar -C mnt --mtime=0 -cf $out .
'';
};
···
echo Packing layer
mkdir $out
-
tar -C layer -cf $out/layer.tar .
+
tar -C layer --mtime=0 -cf $out/layer.tar .
ts=$(${tarsum} < $out/layer.tar)
cat ${baseJson} | jshon -s "$ts" -i checksum > $out/json
echo -n "1.0" > $out/VERSION
···
echo Packing layer
mkdir $out
-
tar -C layer -cf $out/layer.tar .
+
tar -C layer --mtime=0 -cf $out/layer.tar .
ts=$(${tarsum} < $out/layer.tar)
cat ${baseJson} | jshon -s "$ts" -i checksum > $out/json
echo -n "1.0" > $out/VERSION
···
tar -tf temp/layer.tar >> baseFiles
sed 's/^\.//' -i baseFiles
comm <(sort -n baseFiles|uniq) <(sort -n layerFiles|uniq|grep -v ${layer}) -1 -3 > newFiles
-
tar -rpf temp/layer.tar --no-recursion --files-from newFiles 2>/dev/null || true
+
tar -rpf temp/layer.tar --mtime=0 --no-recursion --files-from newFiles 2>/dev/null || true
echo Adding meta
···
chmod -R a-w image
echo Cooking the image
-
tar -C image -c . | pigz > $out
+
tar -C image --mtime=0 -c . | pigz -nT > $out
'';
in