Merge pull request #40947 from samueldr/fix/34779
dockerTools: fixes extraCommands for mkRootLayer.
This commit is contained in:
commit
2e98e0c003
@ -45,5 +45,11 @@ import ./make-test.nix ({ pkgs, ... }: {
|
|||||||
$docker->succeed("docker load --input='${pkgs.dockerTools.examples.onTopOfPulledImage}'");
|
$docker->succeed("docker load --input='${pkgs.dockerTools.examples.onTopOfPulledImage}'");
|
||||||
$docker->succeed("docker run --rm ontopofpulledimage hello");
|
$docker->succeed("docker run --rm ontopofpulledimage hello");
|
||||||
$docker->succeed("docker rmi ontopofpulledimage");
|
$docker->succeed("docker rmi ontopofpulledimage");
|
||||||
|
|
||||||
|
# Regression test for issue #34779
|
||||||
|
$docker->succeed("docker load --input='${pkgs.dockerTools.examples.runAsRootExtraCommands}'");
|
||||||
|
$docker->succeed("docker run --rm runasrootextracommands cat extraCommands");
|
||||||
|
$docker->succeed("docker run --rm runasrootextracommands cat runAsRoot");
|
||||||
|
$docker->succeed("docker rmi '${pkgs.dockerTools.examples.runAsRootExtraCommands.imageName}'");
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
@ -352,7 +352,9 @@ rec {
|
|||||||
extraCommands ? ""
|
extraCommands ? ""
|
||||||
}:
|
}:
|
||||||
# Generate an executable script from the `runAsRoot` text.
|
# Generate an executable script from the `runAsRoot` text.
|
||||||
let runAsRootScript = shellScript "run-as-root.sh" runAsRoot;
|
let
|
||||||
|
runAsRootScript = shellScript "run-as-root.sh" runAsRoot;
|
||||||
|
extraCommandsScript = shellScript "extra-commands.sh" extraCommands;
|
||||||
in runWithOverlay {
|
in runWithOverlay {
|
||||||
name = "docker-layer-${name}";
|
name = "docker-layer-${name}";
|
||||||
|
|
||||||
@ -390,7 +392,7 @@ rec {
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
postUmount = ''
|
postUmount = ''
|
||||||
(cd layer; eval "${extraCommands}")
|
(cd layer; ${extraCommandsScript})
|
||||||
|
|
||||||
echo "Packing layer..."
|
echo "Packing layer..."
|
||||||
mkdir $out
|
mkdir $out
|
||||||
|
@ -124,4 +124,16 @@ rec {
|
|||||||
fromImage = nixFromDockerHub;
|
fromImage = nixFromDockerHub;
|
||||||
contents = [ pkgs.hello ];
|
contents = [ pkgs.hello ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# 8. regression test for erroneous use of eval and string expansion.
|
||||||
|
# See issue #34779 and PR #40947 for details.
|
||||||
|
runAsRootExtraCommands = pkgs.dockerTools.buildImage {
|
||||||
|
name = "runAsRootExtraCommands";
|
||||||
|
contents = [ pkgs.coreutils ];
|
||||||
|
# The parens here are to create problematic bash to embed and eval. In case
|
||||||
|
# this is *embedded* into the script (with nix expansion) the initial quotes
|
||||||
|
# will close the string and the following parens are unexpected
|
||||||
|
runAsRoot = ''echo "(runAsRoot)" > runAsRoot'';
|
||||||
|
extraCommands = ''echo "(extraCommand)" > extraCommands'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user