forked from lix-project/hydra
Account steps with preferLocalBuild as a separate system type
They will show up in machineTypes as (e.g.) x86_64-linux:local instead of x86_64-linux. This is to prevent the Hydra provisioner from creating machines for steps that are supposed to be executed locally.
This commit is contained in:
parent
7e954aff03
commit
ee9bf7ace7
|
@ -332,21 +332,26 @@ Step::ptr State::createStep(std::shared_ptr<StoreAPI> store, const Path & drvPat
|
||||||
it's not runnable yet, and other threads won't make it
|
it's not runnable yet, and other threads won't make it
|
||||||
runnable while step->created == false. */
|
runnable while step->created == false. */
|
||||||
step->drv = readDerivation(drvPath);
|
step->drv = readDerivation(drvPath);
|
||||||
step->systemType = step->drv.platform;
|
|
||||||
{
|
|
||||||
auto i = step->drv.env.find("requiredSystemFeatures");
|
|
||||||
if (i != step->drv.env.end()) {
|
|
||||||
step->requiredSystemFeatures = tokenizeString<std::set<std::string>>(i->second);
|
|
||||||
step->systemType += ":";
|
|
||||||
step->systemType += concatStringsSep(",", step->requiredSystemFeatures);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto attr = step->drv.env.find("preferLocalBuild");
|
auto attr = step->drv.env.find("preferLocalBuild");
|
||||||
step->preferLocalBuild =
|
step->preferLocalBuild =
|
||||||
attr != step->drv.env.end() && attr->second == "1"
|
attr != step->drv.env.end() && attr->second == "1"
|
||||||
&& has(localPlatforms, step->drv.platform);
|
&& has(localPlatforms, step->drv.platform);
|
||||||
|
|
||||||
|
step->systemType = step->drv.platform;
|
||||||
|
{
|
||||||
|
auto i = step->drv.env.find("requiredSystemFeatures");
|
||||||
|
StringSet features;
|
||||||
|
if (i != step->drv.env.end())
|
||||||
|
features = step->requiredSystemFeatures = tokenizeString<std::set<std::string>>(i->second);
|
||||||
|
if (step->preferLocalBuild)
|
||||||
|
features.insert("local");
|
||||||
|
if (!features.empty()) {
|
||||||
|
step->systemType += ":";
|
||||||
|
step->systemType += concatStringsSep(",", features);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Are all outputs valid? */
|
/* Are all outputs valid? */
|
||||||
bool valid = true;
|
bool valid = true;
|
||||||
for (auto & i : step->drv.outputs) {
|
for (auto & i : step->drv.outputs) {
|
||||||
|
|
Loading…
Reference in a new issue