#pragma once #include <memory> #include "hash.hh" #include "derivations.hh" #include "store-api.hh" #include "nar-extractor.hh" struct BuildProduct { nix::Path path, defaultPath; std::string type, subtype, name; bool isRegular = false; std::optional<nix::Hash> sha256hash; std::optional<off_t> fileSize; BuildProduct() { } }; struct BuildMetric { std::string name, unit; double value; }; struct BuildOutput { /* Whether this build has failed with output, i.e., the build finished with exit code 0 but produced a file $out/nix-support/failed. */ bool failed = false; std::string releaseName; uint64_t closureSize = 0, size = 0; std::list<BuildProduct> products; std::map<std::string, nix::StorePath> outputs; std::map<std::string, BuildMetric> metrics; }; BuildOutput getBuildOutput( nix::ref<nix::Store> store, NarMemberDatas & narMembers, const nix::OutputPathMap derivationOutputs);