1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-07 06:01:48 +02:00

Recursively substitute the realisations

Make sure that whenever we substitute a realisation, we also substitute
its entire closure
This commit is contained in:
regnat 2021-05-19 14:51:34 +02:00
parent ce1a6c6b13
commit a22755721b
3 changed files with 15 additions and 3 deletions

View file

@ -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();

View file

@ -25,6 +25,8 @@
}
#define GENERATE_EQUAL(args...) GENERATE_ONE_CMP(==, args)
#define GENERATE_LEQ(args...) GENERATE_ONE_CMP(<, args)
#define GENERATE_NEQ(args...) GENERATE_ONE_CMP(!=, args)
#define GENERATE_CMP(args...) \
GENERATE_EQUAL(args) \
GENERATE_LEQ(args)
GENERATE_LEQ(args) \
GENERATE_NEQ(args)