From 73332fd34224e184b4d9e7a88c69aae85946e4ed Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Sep 2015 14:54:12 +0200 Subject: [PATCH] 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. --- src/libstore/build.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 0b0064704..c1163e63d 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1998,13 +1998,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) - for (auto & i : drv->outputs) - dirsInChroot.erase(i.second.path); + for (auto & i : drv->outputs) + dirsInChroot.erase(i.second.path); #elif SANDBOX_ENABLED /* We don't really have any parent prep work to do (yet?)