summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2024-02-28 05:05:05 +0100
committerGitHub <noreply@github.com>2024-02-28 05:05:05 +0100
commitcffc4e5e25a12867ab28cbe8a7591deb2293dc02 (patch)
tree94c0b034c92ebb58654efe3d9992a8aae4321362
parentMerge pull request #290724 from rafameou/wayland-pipewire-idle-inhibit/backport (diff)
parentnixosTests.docker-tools: Use both code paths in includeStorePath test (diff)
downloadnixpkgs-cffc4e5e25a12867ab28cbe8a7591deb2293dc02.tar.gz
Merge pull request #288893 from NixOS/backport-271976-to-release-23.11
[Backport release-23.11] nixos/dockerTools: fix includeStorePaths when enableFakechroot
-rw-r--r--nixos/tests/docker-tools.nix15
-rw-r--r--pkgs/build-support/docker/default.nix1
-rw-r--r--pkgs/build-support/docker/examples.nix14
3 files changed, 30 insertions, 0 deletions
diff --git a/nixos/tests/docker-tools.nix b/nixos/tests/docker-tools.nix
index fcdfa586fd55..0987e1920b00 100644
--- a/nixos/tests/docker-tools.nix
+++ b/nixos/tests/docker-tools.nix
@@ -71,14 +71,29 @@ in {
docker.succeed("${examples.helloOnRoot} | docker load")
docker.succeed("docker run --rm hello | grep -i hello")
docker.succeed("docker image rm hello:latest")
+
with subtest("includeStorePath = false; breaks example"):
docker.succeed("${examples.helloOnRootNoStore} | docker load")
docker.fail("docker run --rm hello | grep -i hello")
docker.succeed("docker image rm hello:latest")
+ with subtest("includeStorePath = false; breaks example (fakechroot)"):
+ docker.succeed("${examples.helloOnRootNoStoreFakechroot} | docker load")
+ docker.fail("docker run --rm hello | grep -i hello")
+ docker.succeed("docker image rm hello:latest")
+
+ with subtest("Ensure ZERO paths are added to the store"):
+ docker.fail("${examples.helloOnRootNoStore} | ${pkgs.crane}/bin/crane export - - | tar t | grep 'nix/store/'")
+ with subtest("Ensure ZERO paths are added to the store (fakechroot)"):
+ docker.fail("${examples.helloOnRootNoStoreFakechroot} | ${pkgs.crane}/bin/crane export - - | tar t | grep 'nix/store/'")
+
with subtest("includeStorePath = false; works with mounted store"):
docker.succeed("${examples.helloOnRootNoStore} | docker load")
docker.succeed("docker run --rm --volume ${builtins.storeDir}:${builtins.storeDir}:ro hello | grep -i hello")
docker.succeed("docker image rm hello:latest")
+ with subtest("includeStorePath = false; works with mounted store (fakechroot)"):
+ docker.succeed("${examples.helloOnRootNoStoreFakechroot} | docker load")
+ docker.succeed("docker run --rm --volume ${builtins.storeDir}:${builtins.storeDir}:ro hello | grep -i hello")
+ docker.succeed("docker image rm hello:latest")
with subtest("Ensure Docker images use a stable date by default"):
docker.succeed(
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 23e439c6c423..99dc59fa4666 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -922,6 +922,7 @@ rec {
--sort name \
--exclude=./proc \
--exclude=./sys \
+ --exclude=.${builtins.storeDir} \
--numeric-owner --mtime "@$SOURCE_DATE_EPOCH" \
--hard-dereference \
-cf $out/layer.tar .
diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix
index 5784e650dc2e..88f36d337f25 100644
--- a/pkgs/build-support/docker/examples.nix
+++ b/pkgs/build-support/docker/examples.nix
@@ -639,6 +639,20 @@ rec {
includeStorePaths = false;
};
+ helloOnRootNoStoreFakechroot = pkgs.dockerTools.streamLayeredImage {
+ name = "hello";
+ tag = "latest";
+ contents = [
+ (pkgs.buildEnv {
+ name = "hello-root";
+ paths = [ pkgs.hello ];
+ })
+ ];
+ config.Cmd = [ "hello" ];
+ includeStorePaths = false;
+ enableFakechroot = true;
+ };
+
etc =
let
inherit (pkgs) lib;