diff options
author | regnat <rg@regnat.ovh> | 2021-05-19 14:51:34 +0200 |
---|---|---|
committer | regnat <rg@regnat.ovh> | 2021-05-26 18:44:17 +0200 |
commit | a22755721b51949dbf03bc1eb156d6f37dc10bac (patch) | |
tree | 3531730d3a18fa5dff91df82304167d1d2d75caf /src/libstore/build/drv-output-substitution-goal.cc | |
parent | ce1a6c6b13070bf4d9d6d4aedb8158333eaef9b3 (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.cc | 6 |
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(); |