aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-06-23 10:33:25 +0200
committerGitHub <noreply@github.com>2021-06-23 10:33:25 +0200
commit4a5aa1dbf625af795b19badd66c0a0891c9d5b49 (patch)
tree0750ed484406862630c10a64fdc15bf7d93bb230 /src
parent2ab7c821f310a5b2ccabfe8da3212882825d8a00 (diff)
parenta22755721b51949dbf03bc1eb156d6f37dc10bac (diff)
Merge pull request #4838 from NixOS/ca/recursively-substitute-realisations
Recursively substitute the realisations
Diffstat (limited to 'src')
-rw-r--r--src/libstore/build/drv-output-substitution-goal.cc6
-rw-r--r--src/libutil/comparator.hh4
2 files changed, 9 insertions, 1 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();
diff --git a/src/libutil/comparator.hh b/src/libutil/comparator.hh
index 0315dc506..eecd5b819 100644
--- a/src/libutil/comparator.hh
+++ b/src/libutil/comparator.hh
@@ -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)