aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-08 18:16:53 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-08 18:19:04 +0200
commit8cffec84859cec8b610a2a22ab0c4d462a9351ff (patch)
treeec6f4ac648c6a8dc7d4635fe11a235f1aae84287 /src/libstore/build.cc
parentf398949b40624488b54b35d446a9b5ac46101739 (diff)
Remove failed build caching
This feature was implemented for Hydra, but Hydra no longer uses it.
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r--src/libstore/build.cc41
1 files changed, 1 insertions, 40 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index e493ac1aa..c1eea87e3 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1047,11 +1047,6 @@ void DerivationGoal::haveDerivation()
return;
}
- /* Check whether any output previously failed to build. If so,
- don't bother. */
- for (auto & i : invalidOutputs)
- if (pathFailed(i)) return;
-
/* Reject doing a hash build of anything other than a fixed-output
derivation. */
if (buildMode == bmHash) {
@@ -1322,12 +1317,6 @@ void DerivationGoal::tryToBuild()
deletePath(path);
}
- /* Check again whether any output previously failed to build,
- because some other process may have tried and failed before we
- acquired the lock. */
- for (auto & i : drv->outputs)
- if (pathFailed(i.second.path)) return;
-
/* Don't do a remote build if the derivation has the attribute
`preferLocalBuild' set. Also, check and repair modes are only
supported for local builds. */
@@ -1549,17 +1538,6 @@ void DerivationGoal::buildDone()
statusOk(status) ? BuildResult::OutputRejected :
fixedOutput || diskFull ? BuildResult::TransientFailure :
BuildResult::PermanentFailure;
-
- /* Register the outputs of this build as "failed" so we
- won't try to build them again (negative caching).
- However, don't do this for fixed-output derivations,
- since they're likely to fail for transient reasons
- (e.g., fetchurl not being able to access the network).
- Hook errors (like communication problems with the
- remote machine) shouldn't be cached either. */
- if (settings.cacheFailure && !fixedOutput && !diskFull)
- for (auto & i : drv->outputs)
- worker.store.registerFailedPath(i.second.path);
}
done(st, e.msg());
@@ -2993,23 +2971,6 @@ PathSet DerivationGoal::checkPathValidity(bool returnValid, bool checkHash)
}
-bool DerivationGoal::pathFailed(const Path & path)
-{
- if (!settings.cacheFailure) return false;
-
- if (!worker.store.hasPathFailed(path)) return false;
-
- printMsg(lvlError, format("builder for ‘%1%’ failed previously (cached)") % path);
-
- if (settings.printBuildTrace)
- printMsg(lvlError, format("@ build-failed %1% - cached") % drvPath);
-
- done(BuildResult::CachedFailure);
-
- return true;
-}
-
-
Path DerivationGoal::addHashRewrite(const Path & path)
{
string h1 = string(path, settings.nixStore.size() + 1, 32);
@@ -3031,7 +2992,7 @@ void DerivationGoal::done(BuildResult::Status status, const string & msg)
amDone(result.success() ? ecSuccess : ecFailed);
if (result.status == BuildResult::TimedOut)
worker.timedOut = true;
- if (result.status == BuildResult::PermanentFailure || result.status == BuildResult::CachedFailure)
+ if (result.status == BuildResult::PermanentFailure)
worker.permanentFailure = true;
}