Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions src/libstore/build/derivation-building-goal.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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<Activity>(
*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<MaintainCount<uint64_t>>(worker.runningBuilds);
worker.updateProgress();
};
Expand Down
7 changes: 7 additions & 0 deletions src/libstore/include/nix/store/build/derivation-builder.hh
Original file line number Diff line number Diff line change
Expand Up @@ -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<uid_t> getBuilderUID() = 0;
};

struct ExternalBuilder
Expand Down
7 changes: 7 additions & 0 deletions src/libstore/unix/build/derivation-builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,8 @@ class DerivationBuilderImpl : public DerivationBuilder, public DerivationBuilder

bool killChild() override;

std::optional<uid_t> getBuilderUID() override;

private:

bool decideWhetherDiskFull();
Expand Down Expand Up @@ -494,6 +496,11 @@ bool DerivationBuilderImpl::killChild()
return ret;
}

std::optional<uid_t> DerivationBuilderImpl::getBuilderUID()
{
return (buildUser) ? std::optional<uid_t>(buildUser->getUID()) : std::nullopt;
}

SingleDrvOutputs DerivationBuilderImpl::unprepareBuild()
{
/* Since we got an EOF on the logger pipe, the builder is presumed
Expand Down
Loading