From 4c4b219c07c08c709c94af6f3fe1f25dea0563a0 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Fri, 1 Aug 2014 19:29:03 +0200 Subject: Call commonChildInit() before doing chroot init This ensures that daemon clients see error messages from the chroot setup. --- src/libstore/build.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/libstore') 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); -- cgit 1.4.1