1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-02 07:00:59 +01:00
nix/src/libstore/build-result.cc
Eelco Dolstra 852075ec9d Tagging release 2.28.0
-----BEGIN PGP SIGNATURE-----
 
 iQFHBAABCAAxFiEEtUHVUwEnDgvPFcpdgXC0cm1xmN4FAmfv9fITHGVkb2xzdHJh
 QGdtYWlsLmNvbQAKCRCBcLRybXGY3ohrCAC1Uw/JJr3yEPlJ/jLc9t9HqEKMY08W
 W6SEjpYJHYixMXmoonexkqojncNWBaiytRa+vBY7JQq0xTOOBwj42TM2ZzMF4GXi
 vO4Ox0hEsRa/v7tSmK6GFz1sNEKEUOHDNbilg4kzkkBHPEGPUGMwdWkT0akO576Q
 SQ6ERwPPLsHDI2YtAeAD8R4p07CraiyA34ljDPz3rChTAXRPVKWxJUt1enwEWYTr
 cKk45RcR4S8rP1BVwf3wsNsrHjqjbaY45kPAo8GD79hFH0zkyJarS3Kgv8qsWLra
 9ph0DVVG0wiArlET7Y3uchqtAC0Z5LOnutAmOFYFw6DKfWp9yGfl/SVW
 =XRda
 -----END PGP SIGNATURE-----

Merge tag '2.28.0' into sync-2.28.0

Tagging release 2.28.0
2025-04-04 17:49:15 +02:00

49 lines
1.8 KiB
C++

#include "nix/store/build-result.hh"
#include <nlohmann/json.hpp>
namespace nix {
bool BuildResult::operator==(const BuildResult &) const noexcept = default;
std::strong_ordering BuildResult::operator<=>(const BuildResult &) const noexcept = default;
void to_json(nlohmann::json & json, const BuildResult & buildResult)
{
json = nlohmann::json::object();
json["status"] = BuildResult::statusToString(buildResult.status);
if (buildResult.errorMsg != "")
json["errorMsg"] = buildResult.errorMsg;
if (buildResult.timesBuilt)
json["timesBuilt"] = buildResult.timesBuilt;
if (buildResult.isNonDeterministic)
json["isNonDeterministic"] = buildResult.isNonDeterministic;
if (buildResult.startTime)
json["startTime"] = buildResult.startTime;
if (buildResult.stopTime)
json["stopTime"] = buildResult.stopTime;
}
void to_json(nlohmann::json & json, const KeyedBuildResult & buildResult)
{
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;
auto outputs = nlohmann::json::object();
for (auto & [name, output] : buildResult.builtOutputs)
outputs[name] = {
{"path", output.outPath.to_string()},
{"signatures", output.signatures},
};
json["builtOutputs"] = std::move(outputs);
},
},
buildResult.path.raw());
json["path"] = std::move(path);
}
}