aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build/drv-output-substitution-goal.cc
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-05-19 14:51:34 +0200
committerregnat <rg@regnat.ovh>2021-05-26 18:44:17 +0200
commita22755721b51949dbf03bc1eb156d6f37dc10bac (patch)
tree3531730d3a18fa5dff91df82304167d1d2d75caf /src/libstore/build/drv-output-substitution-goal.cc
parentce1a6c6b13070bf4d9d6d4aedb8158333eaef9b3 (diff)
Recursively substitute the realisations
Make sure that whenever we substitute a realisation, we also substitute its entire closure
Diffstat (limited to 'src/libstore/build/drv-output-substitution-goal.cc')
-rw-r--r--src/libstore/build/drv-output-substitution-goal.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libstore/build/drv-output-substitution-goal.cc b/src/libstore/build/drv-output-substitution-goal.cc
index a5ac4c49d..1703e845d 100644
--- a/src/libstore/build/drv-output-substitution-goal.cc
+++ b/src/libstore/build/drv-output-substitution-goal.cc
@@ -53,6 +53,12 @@ void DrvOutputSubstitutionGoal::tryNext()
return;
}
+ for (const auto & [drvOutputDep, _] : outputInfo->dependentRealisations) {
+ if (drvOutputDep != id) {
+ addWaitee(worker.makeDrvOutputSubstitutionGoal(drvOutputDep));
+ }
+ }
+
addWaitee(worker.makePathSubstitutionGoal(outputInfo->outPath));
if (waitees.empty()) outPathValid();