aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2023-01-15 17:47:24 -0500
committerJohn Ericson <John.Ericson@Obsidian.Systems>2023-08-25 09:55:07 -0400
commit692074f7142fcf8ede1266b6d8cbbd5feaf3221f (patch)
tree38a2d6290fcb1efa0f7b52b1a862f84b3f445ee0
parent1c4caef14b51dbb4f749c45311c8e2c9acb75a60 (diff)
Use `Worker::makeDerivationGoal` less
We're about to split up `DerivationGoal` a bit. At that point `makeDerivationGoal` will mean something more specific than it does today. (Perhaps a future rename will make this clearer.) On the other hand, the more public `Worker::makeGoal` function will continue to work exactly as before. So by moving some call sites to use that instead, we preemptively avoid issues in the next step.
-rw-r--r--src/libstore/build/derivation-goal.cc14
-rw-r--r--src/libstore/build/entry-points.cc7
2 files changed, 17 insertions, 4 deletions
diff --git a/src/libstore/build/derivation-goal.cc b/src/libstore/build/derivation-goal.cc
index 84da7f2e1..ea56c0288 100644
--- a/src/libstore/build/derivation-goal.cc
+++ b/src/libstore/build/derivation-goal.cc
@@ -380,7 +380,12 @@ void DerivationGoal::gaveUpOnSubstitution()
worker.store.printStorePath(i.first));
}
- addWaitee(worker.makeDerivationGoal(i.first, i.second, buildMode == bmRepair ? bmRepair : bmNormal));
+ addWaitee(worker.makeGoal(
+ DerivedPath::Built {
+ .drvPath = makeConstantStorePathRef(i.first),
+ .outputs = i.second,
+ },
+ buildMode == bmRepair ? bmRepair : bmNormal));
}
/* Copy the input sources from the eval store to the build
@@ -452,7 +457,12 @@ void DerivationGoal::repairClosure()
if (drvPath2 == outputsToDrv.end())
addWaitee(upcast_goal(worker.makePathSubstitutionGoal(i, Repair)));
else
- addWaitee(worker.makeDerivationGoal(drvPath2->second, OutputsSpec::All(), bmRepair));
+ addWaitee(worker.makeGoal(
+ DerivedPath::Built {
+ .drvPath = makeConstantStorePathRef(drvPath2->second),
+ .outputs = OutputsSpec::All { },
+ },
+ bmRepair));
}
if (waitees.empty()) {
diff --git a/src/libstore/build/entry-points.cc b/src/libstore/build/entry-points.cc
index e941b4e65..f71fb35a6 100644
--- a/src/libstore/build/entry-points.cc
+++ b/src/libstore/build/entry-points.cc
@@ -124,8 +124,11 @@ void Store::repairPath(const StorePath & path)
auto info = queryPathInfo(path);
if (info->deriver && isValidPath(*info->deriver)) {
goals.clear();
- // FIXME: Should just build the specific output we need.
- goals.insert(worker.makeDerivationGoal(*info->deriver, OutputsSpec::All { }, bmRepair));
+ goals.insert(worker.makeGoal(DerivedPath::Built {
+ .drvPath = makeConstantStorePathRef(*info->deriver),
+ // FIXME: Should just build the specific output we need.
+ .outputs = OutputsSpec::All { },
+ }, bmRepair));
worker.run(goals);
} else
throw Error(worker.failingExitStatus(), "cannot repair path '%s'", printStorePath(path));