summary refs log tree commit diff
path: root/pkgs/build-support/docker/default.nix
diff options
context:
space:
mode:
authorSamuel Dionne-Riel <samuel@dionne-riel.com>2018-05-22 19:53:28 -0400
committerSamuel Dionne-Riel <samuel@dionne-riel.com>2018-05-24 06:51:26 -0400
commit60737bd31985116b7cce47f221e8568e66ab73e0 (patch)
treea46edba9712ecd656cc7f4a00f40aff927bce7c5 /pkgs/build-support/docker/default.nix
parent090b7cc8f1bae880fc5542987ede2bcb444d20bf (diff)
downloadnixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar.gz
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar.bz2
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar.lz
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar.xz
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.tar.zst
nixpkgs-60737bd31985116b7cce47f221e8568e66ab73e0.zip
dockerTools: fixes extraCommands for mkRootLayer.
The extraCommands was, previously, simply put in the body of the script
using nix expansion `${extraCommands}` (which looks exactly like bash
expansion!).

This causes issues like in #34779 where scripts will eventually create
invalid bash.

The solution is to use a script like `run-as-root`.

 * * *

Fixes #34779
Diffstat (limited to 'pkgs/build-support/docker/default.nix')
-rw-r--r--pkgs/build-support/docker/default.nix6
1 files changed, 4 insertions, 2 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 374b71d42a3..34af6ad65b9 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -360,7 +360,9 @@ rec {
     extraCommands ? ""
   }:
     # 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 {
       name = "docker-layer-${name}";
 
@@ -398,7 +400,7 @@ rec {
       '';
 
       postUmount = ''
-        (cd layer; eval "${extraCommands}")
+        (cd layer; ${extraCommandsScript})
 
         echo "Packing layer..."
         mkdir $out