From 5558652709f27e8a887580b77b93c705659d7a4b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 20 Jun 2013 19:26:31 +0200 Subject: Don't substitute derivations that have preferLocalBuild set In particular this means that "trivial" derivations such as writeText are not substituted, reducing the number of GET requests to the binary cache by about 200 on a typical NixOS configuration. --- src/libstore/misc.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/libstore/misc.cc') diff --git a/src/libstore/misc.cc b/src/libstore/misc.cc index 74ff26b9cc5c..1bf3f9378245 100644 --- a/src/libstore/misc.cc +++ b/src/libstore/misc.cc @@ -120,7 +120,8 @@ void queryMissing(StoreAPI & store, const PathSet & targets, if (invalid.empty()) continue; todoDrv.insert(*i); - if (settings.useSubstitutes) query.insert(invalid.begin(), invalid.end()); + if (settings.useSubstitutes && !willBuildLocally(drv)) + query.insert(invalid.begin(), invalid.end()); } else { @@ -143,7 +144,7 @@ void queryMissing(StoreAPI & store, const PathSet & targets, PathSet outputs; bool mustBuild = false; - if (settings.useSubstitutes) { + if (settings.useSubstitutes && !willBuildLocally(drv)) { foreach (DerivationOutputs::iterator, j, drv.outputs) { if (!wantOutput(j->first, i2.second)) continue; if (!store.isValidPath(j->second.path)) { -- cgit 1.4.1