From 14e355d87d57ed8a2d66f84f0bb29fb621672b5b Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 14 Aug 2025 10:26:23 -0400 Subject: [PATCH] Remove `InitialOutput::wanted` No derivation goal type has a notion of variable wanted outputs any more. They either want them all, or they just care about a single output, in which case we would just store this information for the one output in question. --- src/libstore/build/derivation-building-goal.cc | 7 +------ .../include/nix/store/build/derivation-building-misc.hh | 1 - src/libstore/unix/build/derivation-builder.cc | 4 ++-- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/libstore/build/derivation-building-goal.cc b/src/libstore/build/derivation-building-goal.cc index 559d77ba0..a4aace163 100644 --- a/src/libstore/build/derivation-building-goal.cc +++ b/src/libstore/build/derivation-building-goal.cc @@ -157,9 +157,7 @@ Goal::Co DerivationBuildingGoal::gaveUpOnSubstitution() we care about all outputs. */ auto outputHashes = staticOutputHashes(worker.evalStore, *drv); for (auto & [outputName, outputHash] : outputHashes) { - InitialOutput v{ - .wanted = true, // Will be refined later - .outputHash = outputHash}; + InitialOutput v{.outputHash = outputHash}; /* TODO we might want to also allow randomizing the paths for regular CA derivations, e.g. for sake of checking @@ -1202,7 +1200,6 @@ std::pair DerivationBuildingGoal::checkPathValidity() // this is an invalid output, gets caught with (!wantedOutputsLeft.empty()) continue; auto & info = *initialOutput; - info.wanted = true; if (i.second) { auto outputPath = *i.second; info.known = { @@ -1237,8 +1234,6 @@ std::pair DerivationBuildingGoal::checkPathValidity() bool allValid = true; for (auto & [_, status] : initialOutputs) { - if (!status.wanted) - continue; if (!status.known || !status.known->isValid()) { allValid = false; break; diff --git a/src/libstore/include/nix/store/build/derivation-building-misc.hh b/src/libstore/include/nix/store/build/derivation-building-misc.hh index 46577919b..9c85e5714 100644 --- a/src/libstore/include/nix/store/build/derivation-building-misc.hh +++ b/src/libstore/include/nix/store/build/derivation-building-misc.hh @@ -45,7 +45,6 @@ struct InitialOutputStatus struct InitialOutput { - bool wanted; Hash outputHash; std::optional known; }; diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc index ed493b8f4..190352985 100644 --- a/src/libstore/unix/build/derivation-builder.cc +++ b/src/libstore/unix/build/derivation-builder.cc @@ -1481,8 +1481,8 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() auto & initialInfo = *initialOutput; /* Don't register if already valid, and not checking */ - initialInfo.wanted = buildMode == bmCheck || !(initialInfo.known && initialInfo.known->isValid()); - if (!initialInfo.wanted) { + bool wanted = buildMode == bmCheck || !(initialInfo.known && initialInfo.known->isValid()); + if (!wanted) { outputReferencesIfUnregistered.insert_or_assign( outputName, AlreadyRegistered{.path = initialInfo.known->path}); continue;