diff options
Diffstat (limited to 'src/libstore/build/drv-output-substitution-goal.cc')
-rw-r--r-- | src/libstore/build/drv-output-substitution-goal.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/libstore/build/drv-output-substitution-goal.cc b/src/libstore/build/drv-output-substitution-goal.cc index 62e86e1cc..b41dae5d6 100644 --- a/src/libstore/build/drv-output-substitution-goal.cc +++ b/src/libstore/build/drv-output-substitution-goal.cc @@ -41,8 +41,7 @@ Goal::WorkResult DrvOutputSubstitutionGoal::tryNext() if maxSubstitutionJobs == 0, we still allow a substituter to run. This prevents infinite waiting. */ if (worker.runningSubstitutions >= std::max(1U, settings.maxSubstitutionJobs.get())) { - worker.waitForBuildSlot(shared_from_this()); - return StillAlive{}; + return WaitForSlot{}; } maintainRunningSubstitutions = @@ -101,6 +100,7 @@ Goal::WorkResult DrvOutputSubstitutionGoal::realisationFetched() return tryNext(); } + WaitForGoals result; for (const auto & [depId, depPath] : outputInfo->dependentRealisations) { if (depId != id) { if (auto localOutputInfo = worker.store.queryRealisation(depId); @@ -116,17 +116,17 @@ Goal::WorkResult DrvOutputSubstitutionGoal::realisationFetched() ); return tryNext(); } - addWaitee(worker.makeDrvOutputSubstitutionGoal(depId)); + result.goals.insert(worker.makeDrvOutputSubstitutionGoal(depId)); } } - addWaitee(worker.makePathSubstitutionGoal(outputInfo->outPath)); + result.goals.insert(worker.makePathSubstitutionGoal(outputInfo->outPath)); - if (waitees.empty()) { + if (result.goals.empty()) { return outPathValid(); } else { state = &DrvOutputSubstitutionGoal::outPathValid; - return StillAlive{}; + return result; } } |