about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-04T15·07+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-08-04T15·09+0200
commitbb45092f72d173a7754f7e4a6457d44c748a893b (patch)
tree747b4a365033dc1da3f2ebe6844a5cd0b7058b0c
parent7a60ff9a629f6d7c36ec710738a15e713acd6a34 (diff)
Make chroot builds easier to set up
By default, we now include /bin/sh as a bind-mount of bash.
-rw-r--r--release.nix8
-rw-r--r--src/libstore/globals.cc3
2 files changed, 11 insertions, 0 deletions
diff --git a/release.nix b/release.nix
index 1f91e23b5d00..c43925792575 100644
--- a/release.nix
+++ b/release.nix
@@ -93,6 +93,14 @@ let
           --sysconfdir=/etc
         '';
 
+        # Provide a default value for the ‘build-chroot-dirs’ setting
+        # that includes /bin/sh pointing to bash.
+        preHook = lib.optionalString stdenv.isLinux (
+          let sh = stdenv.shell; in
+          ''
+            NIX_CFLAGS_COMPILE+=" -DDEFAULT_CHROOT_DIRS=\"/bin/sh=${sh}:$(tr '\n' ':' < ${writeReferencesToFile sh})\""
+          '');
+
         enableParallelBuilding = true;
 
         makeFlags = "profiledir=$(out)/etc/profile.d";
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index e9fe0beca4ef..77f25005b85f 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -48,6 +48,9 @@ Settings::Settings()
     useSubstitutes = true;
     buildUsersGroup = getuid() == 0 ? "nixbld" : "";
     useChroot = false;
+#ifdef DEFAULT_CHROOT_DIRS
+    dirsInChroot = tokenizeString<StringSet>(DEFAULT_CHROOT_DIRS, ":");
+#endif
     useSshSubstituter = true;
     impersonateLinux26 = false;
     keepLog = true;