forked from lix-project/nix-eval-jobs
Add flag to enable meta
I removed meta from the output in 434376f8e1
with the intention of adding it back gated by a flag, but that never happened.
Adding meta is quite a substantial increase in output size and has some non-trivial performance impact at scale, so it's best to leave it as opt-in.
This commit is contained in:
parent
0570194d0a
commit
3268f3a6af
|
@ -34,6 +34,7 @@ struct MyArgs : MixEvalArgs, MixCommonArgs
|
|||
Path releaseExpr;
|
||||
Path gcRootsDir;
|
||||
bool flake = false;
|
||||
bool meta = false;
|
||||
size_t nrWorkers = 1;
|
||||
size_t maxMemorySize = 4096;
|
||||
pureEval evalMode = evalAuto;
|
||||
|
@ -94,6 +95,12 @@ struct MyArgs : MixEvalArgs, MixCommonArgs
|
|||
.handler = {&flake, true}
|
||||
});
|
||||
|
||||
addFlag({
|
||||
.longName = "meta",
|
||||
.description = "include derivation meta field in output",
|
||||
.handler = {&meta, true}
|
||||
});
|
||||
|
||||
expectArg("expr", &releaseExpr);
|
||||
}
|
||||
};
|
||||
|
@ -182,21 +189,24 @@ static void worker(
|
|||
reply["outputs"][out.first] = out.second;
|
||||
}
|
||||
|
||||
nlohmann::json meta;
|
||||
for (auto & name : drv->queryMetaNames()) {
|
||||
PathSet context;
|
||||
std::stringstream ss;
|
||||
if (myArgs.meta) {
|
||||
nlohmann::json meta;
|
||||
for (auto & name : drv->queryMetaNames()) {
|
||||
PathSet context;
|
||||
std::stringstream ss;
|
||||
|
||||
auto metaValue = drv->queryMeta(name);
|
||||
// Skip non-serialisable types
|
||||
// TODO: Fix serialisation of derivations to store paths
|
||||
if (metaValue == 0) {
|
||||
continue;
|
||||
}
|
||||
auto metaValue = drv->queryMeta(name);
|
||||
// Skip non-serialisable types
|
||||
// TODO: Fix serialisation of derivations to store paths
|
||||
if (metaValue == 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
printValueAsJSON(state, true, *metaValue, noPos, ss, context);
|
||||
nlohmann::json field = nlohmann::json::parse(ss.str());
|
||||
meta[name] = field;
|
||||
printValueAsJSON(state, true, *metaValue, noPos, ss, context);
|
||||
nlohmann::json field = nlohmann::json::parse(ss.str());
|
||||
meta[name] = field;
|
||||
}
|
||||
reply["meta"] = meta;
|
||||
}
|
||||
|
||||
/* Register the derivation as a GC root. !!! This
|
||||
|
|
|
@ -13,7 +13,7 @@ BIN = PROJECT_ROOT.joinpath("build", "src", "nix-eval-jobs")
|
|||
|
||||
def common_test(extra_args: List[str]) -> None:
|
||||
with TemporaryDirectory() as tempdir:
|
||||
cmd = [str(BIN), "--gc-roots-dir", tempdir] + extra_args
|
||||
cmd = [str(BIN), "--gc-roots-dir", tempdir, "--meta"] + extra_args
|
||||
res = subprocess.run(
|
||||
cmd,
|
||||
cwd=TEST_ROOT.joinpath("assets"),
|
||||
|
@ -30,11 +30,12 @@ def common_test(extra_args: List[str]) -> None:
|
|||
assert built_job["name"] == "job1"
|
||||
assert built_job["outputs"]["out"].startswith("/nix/store")
|
||||
assert built_job["drvPath"].endswith(".drv")
|
||||
|
||||
assert built_job["meta"]['broken'] is False
|
||||
|
||||
substituted_job = results[1]
|
||||
assert substituted_job["attr"] == "substitutedJob"
|
||||
assert substituted_job["name"].startswith("hello-")
|
||||
assert substituted_job["meta"]['broken'] is False
|
||||
|
||||
|
||||
def test_flake() -> None:
|
||||
|
|
Loading…
Reference in a new issue