diff --git a/src/libstore/build/derivation-building-goal.cc b/src/libstore/build/derivation-building-goal.cc index 8221e12c697..bd8d20a8ef4 100644 --- a/src/libstore/build/derivation-building-goal.cc +++ b/src/libstore/build/derivation-building-goal.cc @@ -263,23 +263,29 @@ Goal::Co DerivationBuildingGoal::tryToBuild() : buildMode == bmCheck ? "checking outputs of '%s'" : "building '%s'", worker.store.printStorePath(drvPath)); + + std::string builderName; #ifndef _WIN32 // TODO enable build hook on Windows - if (hook) - msg += fmt(" on '%s'", hook->machineName); + if (hook) { + builderName = fmt("remote builder: %s", hook->machineName); + } else if (builder) { + auto maybeUID = builder->getBuilderUID(); + if (maybeUID) + builderName = fmt("localhost builder with uid: %s", std::to_string(*maybeUID)); + else + builderName = ""; + } else { + builderName = ""; + } +#else + builderName = ""; #endif + if (builderName != "") + msg += fmt(" on '%s'", builderName); + act = std::make_unique( - *logger, - lvlInfo, - actBuild, - msg, - Logger::Fields{ - worker.store.printStorePath(drvPath), -#ifndef _WIN32 // TODO enable build hook on Windows - hook ? hook->machineName : -#endif - "", - 1, - 1}); + *logger, lvlInfo, actBuild, msg, Logger::Fields{worker.store.printStorePath(drvPath), builderName, 1, 1}); + mcRunningBuilds = std::make_unique>(worker.runningBuilds); worker.updateProgress(); }; diff --git a/src/libstore/include/nix/store/build/derivation-builder.hh b/src/libstore/include/nix/store/build/derivation-builder.hh index af84661e252..3ee9151e8e0 100644 --- a/src/libstore/include/nix/store/build/derivation-builder.hh +++ b/src/libstore/include/nix/store/build/derivation-builder.hh @@ -180,6 +180,13 @@ struct DerivationBuilder : RestrictionContext * killed. */ virtual bool killChild() = 0; + + /** + * Get the builder UID. + * + * @returns the builder UID if run on localhost (e.g. if it exists). + */ + virtual std::optional getBuilderUID() = 0; }; struct ExternalBuilder diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc index 333c4dff8fe..e970a0c0bd5 100644 --- a/src/libstore/unix/build/derivation-builder.cc +++ b/src/libstore/unix/build/derivation-builder.cc @@ -415,6 +415,8 @@ class DerivationBuilderImpl : public DerivationBuilder, public DerivationBuilder bool killChild() override; + std::optional getBuilderUID() override; + private: bool decideWhetherDiskFull(); @@ -494,6 +496,11 @@ bool DerivationBuilderImpl::killChild() return ret; } +std::optional DerivationBuilderImpl::getBuilderUID() +{ + return (buildUser) ? std::optional(buildUser->getUID()) : std::nullopt; +} + SingleDrvOutputs DerivationBuilderImpl::unprepareBuild() { /* Since we got an EOF on the logger pipe, the builder is presumed