aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/build')
-rw-r--r--src/libstore/build/derivation-goal.cc4
-rw-r--r--src/libstore/build/worker.cc8
2 files changed, 5 insertions, 7 deletions
diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc
index 3dca7a3c0..a75a674d1 100644
--- a/src/libstore/build/derivation-goal.cc
+++ b/src/libstore/build/derivation-goal.cc
@@ -1544,6 +1544,10 @@ Goal::Finished DerivationGoal::done(
fs << worker.store.printStorePath(drvPath) << "\t" << buildResult.toString() << std::endl;
}
+ if (ex && isDependency) {
+ logError(ex->info());
+ }
+
return Finished{
.result = buildResult.success() ? ecSuccess : ecFailed,
.ex = ex ? std::make_shared<Error>(std::move(*ex)) : nullptr,
diff --git a/src/libstore/build/worker.cc b/src/libstore/build/worker.cc
index 5d0cc920a..7336ad50f 100644
--- a/src/libstore/build/worker.cc
+++ b/src/libstore/build/worker.cc
@@ -157,19 +157,13 @@ void Worker::goalFinished(GoalPtr goal, Goal::Finished & f)
goal->trace("done");
assert(!goal->exitCode.has_value());
goal->exitCode = f.result;
+ goal->ex = f.ex;
permanentFailure |= f.permanentFailure;
timedOut |= f.timedOut;
hashMismatch |= f.hashMismatch;
checkMismatch |= f.checkMismatch;
- if (f.ex) {
- if (!goal->waiters.empty())
- logError(f.ex->info());
- else
- goal->ex = f.ex;
- }
-
for (auto & i : goal->waiters) {
if (GoalPtr waiting = i.lock()) {
assert(waiting->waitees.count(goal));