diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-08-01T17·29+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-08-01T17·29+0200 |
commit | 4c4b219c07c08c709c94af6f3fe1f25dea0563a0 (patch) | |
tree | c0ef03604dfd6a807bea25a8431a3064174e4bb3 /src/libstore | |
parent | eea0401d7a8ed1292f71d697e7a59c429aa18d5d (diff) |
Call commonChildInit() before doing chroot init
This ensures that daemon clients see error messages from the chroot setup.
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/build.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 479bc4a243a2..03aea8b8e88d 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -374,8 +374,6 @@ void Goal::trace(const format & f) /* Common initialisation performed in child processes. */ static void commonChildInit(Pipe & logPipe) { - restoreAffinity(); - /* Put the child in a separate session (and thus a separate process group) so that it has no controlling terminal (meaning that e.g. ssh cannot open /dev/tty) and it doesn't receive @@ -1962,6 +1960,12 @@ void DerivationGoal::initChild() try { /* child */ + _writeToStderr = 0; + + restoreAffinity(); + + commonChildInit(builderOut); + #if CHROOT_ENABLED if (useChroot) { /* Initialise the loopback interface. */ @@ -2080,8 +2084,6 @@ void DerivationGoal::initChild() } #endif - commonChildInit(builderOut); - if (chdir(tmpDir.c_str()) == -1) throw SysError(format("changing into `%1%'") % tmpDir); |