diff options
author | Robert Hensing <robert@roberthensing.nl> | 2021-10-18 12:39:51 +0200 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2021-10-18 12:41:51 +0200 |
commit | 3b9d05e114550db6ea23befa078bd978371d863c (patch) | |
tree | a20746d84a3b76268f7b38018b60e42b9535baa2 | |
parent | c7fd252d324f6eb4eeb9a769d1533cb4ede361ad (diff) | |
download | nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar.gz nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar.bz2 nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar.lz nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar.xz nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.tar.zst nixpkgs-3b9d05e114550db6ea23befa078bd978371d863c.zip |
dockerTools: Fix and test #118722 path in contents
-rw-r--r-- | nixos/tests/docker-tools.nix | 13 | ||||
-rw-r--r-- | pkgs/build-support/docker/default.nix | 7 | ||||
-rw-r--r-- | pkgs/build-support/docker/examples.nix | 12 |
3 files changed, 31 insertions, 1 deletions
diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix index e482223436f..7110187e8d7 100644 --- a/nixos/tests/docker-tools.nix +++ b/nixos/tests/docker-tools.nix @@ -383,5 +383,18 @@ import ./make-test-python.nix ({ pkgs, ... }: { docker.succeed( "tar -tf ${examples.exportBash} | grep '\./bin/bash' > /dev/null" ) + + with subtest("Ensure bare paths in contents are loaded correctly"): + docker.succeed( + "docker load --input='${examples.build-image-with-path}'", + "docker run --rm build-image-with-path bash -c '[[ -e /hello.txt ]]'", + "docker rmi build-image-with-path", + ) + docker.succeed( + "${examples.layered-image-with-path} | docker load", + "docker run --rm layered-image-with-path bash -c '[[ -e /hello.txt ]]'", + "docker rmi layered-image-with-path", + ) + ''; }) diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index 47fd99c12f8..a42b025bc7f 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -37,6 +37,11 @@ let + inherit (lib) + escapeShellArgs + toList + ; + mkDbExtraCommand = contents: let contentsList = if builtins.isList contents then contents else [ contents ]; @@ -402,7 +407,7 @@ rec { preMount = lib.optionalString (contents != null && contents != [ ]) '' echo "Adding contents..." - for item in ${toString contents}; do + for item in ${escapeShellArgs (map (c: "${c}") (toList contents))}; do echo "Adding $item..." rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/ done diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix index 9f6823a5878..141c2ba0ea4 100644 --- a/pkgs/build-support/docker/examples.nix +++ b/pkgs/build-support/docker/examples.nix @@ -553,4 +553,16 @@ rec { # Example export of the bash image exportBash = pkgs.dockerTools.exportImage { fromImage = bash; }; + + build-image-with-path = buildImage { + name = "build-image-with-path"; + tag = "latest"; + contents = [ pkgs.bashInteractive ./test-dummy ]; + }; + + layered-image-with-path = pkgs.dockerTools.streamLayeredImage { + name = "layered-image-with-path"; + tag = "latest"; + contents = [ pkgs.bashInteractive ./test-dummy ]; + }; } |