diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-09-02 14:54:12 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-12-02 19:37:59 +0200 |
commit | 60c7c364f81309adb6e22e2cbf250669916b7d11 (patch) | |
tree | 6c08c53913157ad8c629d6e5140de8a792e6173e | |
parent | 538684d0c42fdedfbd660840d3e66c783c9006ef (diff) | |
download | patches-60c7c364f81309adb6e22e2cbf250669916b7d11.tar patches-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.
-rw-r--r-- | nix/libstore/build.cc | 8 |
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"); |