1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-07-06 21:41:48 +02:00

Don't use DerivedPath::toJSON()

It doesn't work on unrealized paths.
This commit is contained in:
Eelco Dolstra 2025-03-14 17:05:38 +01:00
parent 762114b7c4
commit fd0d824fa5
4 changed files with 22 additions and 12 deletions

View file

@ -23,11 +23,20 @@ void to_json(nlohmann::json & json, const BuildResult & buildResult)
json["stopTime"] = buildResult.stopTime;
}
nlohmann::json KeyedBuildResult::toJSON(Store & store) const
void to_json(nlohmann::json & json, const KeyedBuildResult & buildResult)
{
auto json = nlohmann::json((const BuildResult &) *this);
json["path"] = path.toJSON(store);
return json;
to_json(json, (const BuildResult &) buildResult);
auto path = nlohmann::json::object();
std::visit(
overloaded{
[&](const DerivedPathOpaque & opaque) { path["opaque"] = opaque.path.to_string(); },
[&](const DerivedPathBuilt & drv) {
path["drvPath"] = drv.drvPath->getBaseStorePath().to_string();
path["outputs"] = drv.outputs.to_string();
},
},
buildResult.path.raw());
json["path"] = std::move(path);
}
}

View file

@ -134,10 +134,9 @@ struct KeyedBuildResult : BuildResult
KeyedBuildResult(BuildResult res, DerivedPath path)
: BuildResult(std::move(res)), path(std::move(path))
{ }
nlohmann::json toJSON(Store & store) const;
};
void to_json(nlohmann::json & json, const BuildResult & buildResult);
void to_json(nlohmann::json & json, const KeyedBuildResult & buildResult);
}

View file

@ -1566,9 +1566,10 @@ Goal::Done DerivationGoal::done(
logger->result(
act ? act->id : getCurActivity(),
resBuildResult,
KeyedBuildResult(
buildResult,
DerivedPath::Built{.drvPath = makeConstantStorePathRef(drvPath), .outputs = wantedOutputs}).toJSON(worker.store));
nlohmann::json(
KeyedBuildResult(
buildResult,
DerivedPath::Built{.drvPath = makeConstantStorePathRef(drvPath), .outputs = wantedOutputs})));
return amDone(buildResult.success() ? ecSuccess : ecFailed, std::move(ex));
}

View file

@ -42,9 +42,10 @@ Goal::Done PathSubstitutionGoal::done(
logger->result(
getCurActivity(),
resBuildResult,
KeyedBuildResult(
buildResult,
DerivedPath::Opaque{storePath}).toJSON(worker.store));
nlohmann::json(
KeyedBuildResult(
buildResult,
DerivedPath::Opaque{storePath})));
return amDone(result);
}