aboutsummaryrefslogtreecommitdiff
path: root/nix/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-09-02 14:54:12 +0200
committerLudovic Courtès <ludo@gnu.org>2015-12-02 19:37:59 +0200
commit60c7c364f81309adb6e22e2cbf250669916b7d11 (patch)
tree6c08c53913157ad8c629d6e5140de8a792e6173e /nix/libstore
parent538684d0c42fdedfbd660840d3e66c783c9006ef (diff)
downloadguix-60c7c364f81309adb6e22e2cbf250669916b7d11.tar
guix-60c7c364f81309adb6e22e2cbf250669916b7d11.tar.gz
daemon: Filter build-chroot-dirs entries that conflict with derivation outputs.
Fixes https://github.com/NixOS/nixpkgs/issues/9504. Note that this means we may have a non-functional /bin/sh in the chroot while rebuilding Bash or one of its dependencies. Ideally those packages don't rely on /bin/sh though.
Diffstat (limited to 'nix/libstore')
-rw-r--r--nix/libstore/build.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index ab33f57265..64678a5594 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -1870,13 +1870,13 @@ void DerivationGoal::startBuilder()
}
}
- /* If we're repairing or checking, it's possible that we're
+ /* If we're repairing, checking or rebuilding part of a
+ multiple-outputs derivation, it's possible that we're
rebuilding a path that is in settings.dirsInChroot
(typically the dependencies of /bin/sh). Throw them
out. */
- if (buildMode != bmNormal)
- foreach (DerivationOutputs::iterator, i, drv.outputs)
- dirsInChroot.erase(i->second.path);
+ for (auto & i : drv.outputs)
+ dirsInChroot.erase(i.second.path);
#else
throw Error("chroot builds are not supported on this platform");