diff options
author | Robert Hensing <roberth@users.noreply.github.com> | 2023-03-08 18:55:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-08 18:55:20 +0100 |
commit | 1e383aada51b416c6c27d4884d2e258df201bc11 (patch) | |
tree | bc6eabee4e09233262f4b4a948914a598140cf09 /pkgs/build-support | |
parent | 2bac76e41395757569afc5b2664250ccf0efe911 (diff) | |
parent | 84e04ccf8570e9f8072486f7d750d326225c7117 (diff) |
Merge pull request #214438 from agbrooks/master
dockerTools.buildImage: Handle base images w/ duplicate rootfs diffs
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index bdc93f3643f10..7fa5aeafc8e3d 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -229,6 +229,15 @@ rec { mount /dev/${vmTools.hd} disk cd disk + function dedup() { + declare -A seen + while read ln; do + if [[ -z "''${seen["$ln"]:-}" ]]; then + echo "$ln"; seen["$ln"]=1 + fi + done + } + if [[ -n "$fromImage" ]]; then echo "Unpacking base image..." mkdir image @@ -245,7 +254,8 @@ rec { parentID="$(cat "image/manifest.json" | jq -r '.[0].Config | rtrimstr(".json")')" fi - cat ./image/manifest.json | jq -r '.[0].Layers | .[]' > layer-list + # In case of repeated layers, unpack only the last occurrence of each + cat ./image/manifest.json | jq -r '.[0].Layers | .[]' | tac | dedup | tac > layer-list else touch layer-list fi |