From eff403b5abc45851d683989f35dd60d40fcda267 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 14 Dec 2025 00:49:20 -0500 Subject: [PATCH] Inline `DerivationBuildingGoal::builder` --- .../build/derivation-building-goal.cc | 23 ++++--------------- .../store/build/derivation-building-goal.hh | 6 ----- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/src/libstore/build/derivation-building-goal.cc b/src/libstore/build/derivation-building-goal.cc index cb7d4d807..cc467daf0 100644 --- a/src/libstore/build/derivation-building-goal.cc +++ b/src/libstore/build/derivation-building-goal.cc @@ -44,10 +44,6 @@ DerivationBuildingGoal::~DerivationBuildingGoal() { /* Careful: we should never ever throw an exception from a destructor. */ -#ifndef _WIN32 // TODO enable `DerivationBuilder` on Windows - if (builder) - builder.reset(); -#endif try { closeLogFile(); } catch (...) { @@ -409,9 +405,6 @@ Goal::Co DerivationBuildingGoal::tryToBuild() Magenta( "/usr/sbin/softwareupdate --install-rosetta && launchctl stop org.nixos.nix-daemon")); -#ifndef _WIN32 // TODO enable `DerivationBuilder` on Windows - builder.reset(); -#endif outputLocks.unlock(); worker.permanentFailure = true; co_return doneFailure({BuildResult::Failure::InputRejected, std::move(msg)}); @@ -584,6 +577,7 @@ Goal::Co DerivationBuildingGoal::tryToBuild() #else assert(!hook); + std::unique_ptr builder; Descriptor builderOut; // Will continue here while waiting for a build user below @@ -711,9 +705,9 @@ Goal::Co DerivationBuildingGoal::tryToBuild() while (true) { auto event = co_await WaitForChildEvent{}; if (auto * output = std::get_if(&event)) { - if (isReadDesc(output->fd)) { + if (output->fd == builder->builderOut.get()) { if (processChildOutput(output->data)) { - if (builder && builder->killChild()) + if (builder->killChild()) worker.childTerminated(this); co_return doneFailureLogTooLong(); } @@ -723,7 +717,7 @@ Goal::Co DerivationBuildingGoal::tryToBuild() flushLine(); break; } else if (auto * timeout = std::get_if(&event)) { - if (builder && builder->killChild()) + if (builder->killChild()) worker.childTerminated(this); co_return doneFailure(std::move(*timeout)); } @@ -1053,15 +1047,6 @@ void DerivationBuildingGoal::closeLogFile() fdLogFile.close(); } -bool DerivationBuildingGoal::isReadDesc(Descriptor fd) -{ -#ifdef _WIN32 // TODO enable build hook on Windows - return false; -#else - return builder && fd == builder->builderOut.get(); -#endif -} - bool DerivationBuildingGoal::processChildOutput(std::string_view data) { logSize += data.size(); 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 5fa727d2c..3072aed0a 100644 --- a/src/libstore/include/nix/store/build/derivation-building-goal.hh +++ b/src/libstore/include/nix/store/build/derivation-building-goal.hh @@ -81,10 +81,6 @@ private: std::string currentLogLine; size_t currentLogLinePos = 0; // to handle carriage return -#ifndef _WIN32 // TODO enable build hook on Windows - std::unique_ptr builder; -#endif - BuildMode buildMode; std::unique_ptr> mcRunningBuilds; @@ -119,8 +115,6 @@ private: */ void closeLogFile(); - bool isReadDesc(Descriptor fd); - /** * Process log output from a child process. *