summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-08-28 17:55:20 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-08-28 17:55:20 -0700
commit5ca1c32a9d3705b36caef94bd8a8628a81c2d210 (patch)
tree0baaad6405c8483726accb0b28c7aa5ffbea068b /pkgs/build-support
parent28a18999faeab25b92649027f4411e7f41d793da (diff)
parentd2dce19793069b6104ff7df29af92316e7fe3b50 (diff)
downloadnixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar.gz
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar.bz2
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar.lz
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar.xz
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.tar.zst
nixlib-5ca1c32a9d3705b36caef94bd8a8628a81c2d210.zip
Merge branch 'master.upstream' into staging.upstream
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/build-fhs-userenv/default.nix44
1 files changed, 30 insertions, 14 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/default.nix b/pkgs/build-support/build-fhs-userenv/default.nix
index b57b687e20f7..9060c073eee3 100644
--- a/pkgs/build-support/build-fhs-userenv/default.nix
+++ b/pkgs/build-support/build-fhs-userenv/default.nix
@@ -1,4 +1,4 @@
-{ writeText, writeScriptBin, stdenv, ruby } : { env, runScript } :
+{ runCommand, writeText, writeScriptBin, stdenv, ruby } : { env, runScript ? "bash" } :
 
 let
   name = env.pname;
@@ -9,21 +9,37 @@ let
     ${builtins.readFile ./chroot-user.rb}
   '';
 
-  init = writeText "init" ''
-           # Make /tmp directory
-           mkdir -m 1777 /tmp
+  init = run: writeText "${name}-init" ''
+    # Make /tmp directory
+    mkdir -m 1777 /tmp
 
-           # Expose sockets in /tmp
-           for i in /host-tmp/.*-unix; do
-             ln -s "$i" "/tmp/$(basename "$i")"
-           done
+    # Expose sockets in /tmp
+    for i in /host-tmp/.*-unix; do
+      ln -s "$i" "/tmp/$(basename "$i")"
+    done
 
-           [ -d "$1" ] && [ -r "$1" ] && cd "$1"
-           shift
-           exec "${runScript}" "$@"
-         '';
+    [ -d "$1" ] && [ -r "$1" ] && cd "$1"
+    shift
+    exec ${run} "$@"
+  '';
 
-in writeScriptBin name ''
+in runCommand name {
+  passthru.env =
+    runCommand "${name}-shell-env" {
+      shellHook = ''
+        exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init "bash"} "$(pwd)"
+      '';
+    } ''
+      echo >&2 ""
+      echo >&2 "*** User chroot 'env' attributes are intended for interactive nix-shell sessions, not for building! ***"
+      echo >&2 ""
+      exit 1
+    '';
+} ''
+  mkdir -p $out/bin
+  cat <<EOF >$out/bin/${name}
   #! ${stdenv.shell}
-  exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init} "$(pwd)" "$@"
+  exec ${chroot-user}/bin/chroot-user ${env} bash -l ${init runScript} "\$(pwd)" "\$@"
+  EOF
+  chmod +x $out/bin/${name}
 ''