summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorBenjamin Staffin <benley@gmail.com>2017-04-17 22:16:33 -0400
committerGitHub <noreply@github.com>2017-04-17 22:16:33 -0400
commit8cf393bf481b1b11be6491787a1efce21414a990 (patch)
tree72f8ccacdeb9ad6629630601a23a425e2824d623 /pkgs
parent9239bc6c9680950abf49ace083f64590aff97bed (diff)
parent5ca1646bb0404a21dcfc4b3842f0651c1d19b3cc (diff)
downloadnixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar.gz
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar.bz2
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar.lz
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar.xz
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.tar.zst
nixlib-8cf393bf481b1b11be6491787a1efce21414a990.zip
Merge pull request #24947 from timclassic/docker-repro
docker: improve reproducibility of layers
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/build-support/docker/default.nix15
1 files changed, 8 insertions, 7 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 27575053954f..7f63664dadd0 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -209,7 +209,7 @@ rec {
 
       postMount = ''
         echo "Packing raw image..."
-        tar -C mnt --mtime=0 -cf $out .
+        tar -C mnt --mtime="@$SOURCE_DATE_EPOCH" -cf $out .
       '';
     };
 
@@ -247,7 +247,7 @@ rec {
         echo "Adding contents..."
         for item in $contents; do
           echo "Adding $item"
-          rsync -ak $item/ layer/
+          rsync -ak --chown=0:0 $item/ layer/
         done
       else
         echo "No contents to add to layer."
@@ -260,7 +260,7 @@ rec {
       # Tar up the layer and throw it into 'layer.tar'.
       echo "Packing layer..."
       mkdir $out
-      tar -C layer --mtime=0 -cf $out/layer.tar .
+      tar -C layer --mtime="@$SOURCE_DATE_EPOCH" -cf $out/layer.tar .
 
       # Compute a checksum of the tarball.
       echo "Computing layer checksum..."
@@ -310,7 +310,7 @@ rec {
         echo "Adding contents..."
         for item in ${toString contents}; do
           echo "Adding $item..."
-          rsync -ak $item/ layer/
+          rsync -ak --chown=0:0 $item/ layer/
         done
       '';
 
@@ -340,7 +340,7 @@ rec {
 
         echo "Packing layer..."
         mkdir $out
-        tar -C layer --mtime=0 -cf $out/layer.tar .
+        tar -C layer --mtime="@$SOURCE_DATE_EPOCH" -cf $out/layer.tar .
 
         # Compute the tar checksum and add it to the output json.
         echo "Computing checksum..."
@@ -467,7 +467,8 @@ rec {
         comm <(sort -n baseFiles|uniq) \
              <(sort -n layerFiles|uniq|grep -v ${layer}) -1 -3 > newFiles
         # Append the new files to the layer.
-        tar -rpf temp/layer.tar --mtime=0 --no-recursion --files-from newFiles
+        tar -rpf temp/layer.tar --mtime="@$SOURCE_DATE_EPOCH" \
+          --owner=0 --group=0 --no-recursion --files-from newFiles
 
         echo "Adding meta..."
 
@@ -496,7 +497,7 @@ rec {
         chmod -R a-w image
 
         echo "Cooking the image..."
-        tar -C image --mtime=0 -c . | pigz -nT > $out
+        tar -C image --mtime="@$SOURCE_DATE_EPOCH" -c . | pigz -nT > $out
 
         echo "Finished."
       '';