From 3e0b1705c13ab612ca1e4f524619d12a9733eeff Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 28 Aug 2025 14:54:11 -0400 Subject: [PATCH] Move `markContentsGood` to after `DerivationBuilder` finishes I think this should be fine for repairing. If anything, it is better, because it would be weird to "mark and output good" only for it to then fail output checks. --- src/libstore/build/derivation-building-goal.cc | 10 ++++------ .../include/nix/store/build/derivation-builder.hh | 2 -- src/libstore/unix/build/derivation-builder.cc | 1 - 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/libstore/build/derivation-building-goal.cc b/src/libstore/build/derivation-building-goal.cc index 20a67008c..b1920cadb 100644 --- a/src/libstore/build/derivation-building-goal.cc +++ b/src/libstore/build/derivation-building-goal.cc @@ -623,11 +623,6 @@ Goal::Co DerivationBuildingGoal::tryToBuild() goal.worker.childTerminated(&goal); } - void markContentsGood(const StorePath & path) override - { - goal.worker.markContentsGood(path); - } - Path openLogFile() override { return goal.openLogFile(); @@ -804,8 +799,11 @@ Goal::Co DerivationBuildingGoal::tryToBuild() } { StorePathSet outputPaths; - for (auto & [_, output] : builtOutputs) + for (auto & [_, output] : builtOutputs) { + // for sake of `bmRepair` + worker.markContentsGood(output.outPath); outputPaths.insert(output.outPath); + } runPostBuildHook(worker.store, *logger, drvPath, outputPaths); /* It is now safe to delete the lock files, since all future diff --git a/src/libstore/include/nix/store/build/derivation-builder.hh b/src/libstore/include/nix/store/build/derivation-builder.hh index d7f2058d1..a373c4729 100644 --- a/src/libstore/include/nix/store/build/derivation-builder.hh +++ b/src/libstore/include/nix/store/build/derivation-builder.hh @@ -133,8 +133,6 @@ struct DerivationBuilderCallbacks * @todo this should be reworked */ virtual void childTerminated() = 0; - - virtual void markContentsGood(const StorePath & path) = 0; }; /** diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc index bc48d4256..bf99c4c1a 100644 --- a/src/libstore/unix/build/derivation-builder.cc +++ b/src/libstore/unix/build/derivation-builder.cc @@ -1804,7 +1804,6 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() } store.optimisePath(actualPath, NoRepair); // FIXME: combine with scanForReferences() - miscMethods->markContentsGood(newInfo.path); newInfo.deriver = drvPath; newInfo.ultimate = true;