From 5be07abf6d6299a07104f5dfe14de8e00db8c2af Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 14 Dec 2025 00:29:15 -0500 Subject: [PATCH] Inline `DerivationBuildingGoal::killChild` --- .../build/derivation-building-goal.cc | 24 ++++++++----------- .../store/build/derivation-building-goal.hh | 5 ---- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/libstore/build/derivation-building-goal.cc b/src/libstore/build/derivation-building-goal.cc index b84bf83ac..f428e1911 100644 --- a/src/libstore/build/derivation-building-goal.cc +++ b/src/libstore/build/derivation-building-goal.cc @@ -60,17 +60,6 @@ std::string DerivationBuildingGoal::key() return "dd$" + std::string(drvPath.name()) + "$" + worker.store.printStorePath(drvPath); } -void DerivationBuildingGoal::killChild() -{ -#ifndef _WIN32 // TODO enable build hook on Windows - hook.reset(); -#endif -#ifndef _WIN32 // TODO enable `DerivationBuilder` on Windows - if (builder && builder->killChild()) - worker.childTerminated(this); -#endif -} - std::string showKnownOutputs(const StoreDirConfig & store, const Derivation & drv) { std::string msg; @@ -490,7 +479,7 @@ Goal::Co DerivationBuildingGoal::tryToBuild() flushLine(); break; } else if (auto * timeout = std::get_if(&event)) { - killChild(); + hook.reset(); co_return doneFailure(std::move(*timeout)); } } @@ -721,7 +710,8 @@ Goal::Co DerivationBuildingGoal::tryToBuild() flushLine(); break; } else if (auto * timeout = std::get_if(&event)) { - killChild(); + if (builder && builder->killChild()) + worker.childTerminated(this); co_return doneFailure(std::move(*timeout)); } } @@ -1064,7 +1054,13 @@ Goal::Co DerivationBuildingGoal::processChildOutput(Descriptor fd, std::string_v if (isWrittenToLog) { logSize += data.size(); if (settings.maxLogSize && logSize > settings.maxLogSize) { - killChild(); +#ifndef _WIN32 // TODO enable build hook on Windows + hook.reset(); +#endif +#ifndef _WIN32 // TODO enable `DerivationBuilder` on Windows + if (builder && builder->killChild()) + worker.childTerminated(this); +#endif co_return doneFailure(BuildError( BuildResult::Failure::LogLimitExceeded, "%s killed after writing more than %d bytes of log output", diff --git a/src/libstore/include/nix/store/build/derivation-building-goal.hh b/src/libstore/include/nix/store/build/derivation-building-goal.hh index 6e61cb345..4e5c69814 100644 --- a/src/libstore/include/nix/store/build/derivation-building-goal.hh +++ b/src/libstore/include/nix/store/build/derivation-building-goal.hh @@ -146,11 +146,6 @@ private: */ std::pair checkPathValidity(std::map & initialOutputs); - /** - * Forcibly kill the child process, if any. - */ - void killChild(); - Done doneSuccess(BuildResult::Success::Status status, SingleDrvOutputs builtOutputs); Done doneFailure(BuildError ex);