about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorlewo <lewo@abesis.fr>2020-02-14 09:48:52 +0100
committerGitHub <noreply@github.com>2020-02-14 09:48:52 +0100
commitd49804cf456c01735c7d728c4acf88476a5be811 (patch)
treefb57fa402f1b1c64c8bbdb77f59fe86890e39805 /pkgs/build-support
parentd7b8edf72399662b87d8ba95d85b54b54895a899 (diff)
parentbaa78de59403a69936bd9fc4709707d600926308 (diff)
downloadnixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar.gz
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar.bz2
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar.lz
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar.xz
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.tar.zst
nixlib-d49804cf456c01735c7d728c4acf88476a5be811.zip
Merge pull request #80102 from nlewo/fix-78744
dockerTools.buildLayeredImage: store all paths passed in final layer (fix 78744)
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/docker/examples.nix12
-rwxr-xr-xpkgs/build-support/docker/store-path-to-layer.sh21
2 files changed, 22 insertions, 11 deletions
diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix
index a1f71d35793c..f0dcf236c0e4 100644
--- a/pkgs/build-support/docker/examples.nix
+++ b/pkgs/build-support/docker/examples.nix
@@ -246,4 +246,16 @@ rec {
     contents = [ pkgs.bash pkgs.hello ];
     maxLayers = 2;
   };
+
+  # 16. Create a layered image with more packages than max layers.
+  # coreutils and hello are part of the same layer
+  bulk-layer = pkgs.dockerTools.buildLayeredImage {
+    name = "bulk-layer";
+    tag = "latest";
+    contents = with pkgs; [
+      coreutils hello
+    ];
+    maxLayers = 2;
+  };
+
 }
diff --git a/pkgs/build-support/docker/store-path-to-layer.sh b/pkgs/build-support/docker/store-path-to-layer.sh
index c808abab7a8a..7e8efeea1c10 100755
--- a/pkgs/build-support/docker/store-path-to-layer.sh
+++ b/pkgs/build-support/docker/store-path-to-layer.sh
@@ -5,11 +5,8 @@ set -eu
 layerNumber=$1
 shift
 
-storePath="$1"
-shift
-
 layerPath="./layers/$layerNumber"
-echo "Creating layer #$layerNumber for $storePath"
+echo "Creating layer #$layerNumber for $@"
 
 mkdir -p "$layerPath"
 
@@ -35,13 +32,15 @@ tar -cf "$layerPath/layer.tar"  \
 # to /nix/store. In order to create the correct structure
 # in the tar file, we transform the relative nix store
 # path to the absolute store path.
-n=$(basename "$storePath")
-tar -C /nix/store -rpf "$layerPath/layer.tar" \
-    --hard-dereference --sort=name \
-    --mtime="@$SOURCE_DATE_EPOCH" \
-    --owner=0 --group=0 \
-    --transform="s,$n,/nix/store/$n," \
-    $n
+for storePath in "$@"; do
+  n=$(basename "$storePath")
+  tar -C /nix/store -rpf "$layerPath/layer.tar" \
+      --hard-dereference --sort=name \
+      --mtime="@$SOURCE_DATE_EPOCH" \
+      --owner=0 --group=0 \
+      --transform="s,$n,/nix/store/$n," \
+      $n
+done
 
 # Compute a checksum of the tarball.
 tarhash=$(tarsum < $layerPath/layer.tar)