This is just C++ changes without any Perl / Frontend / SQL Schema changes. The idea is that it should be possible to redeploy Hydra with these chnages with (a) no schema migration and also (b) no regressions. We should be able to much more safely deploy these to a staging server and then production `hydra.nixos.org`. Extracted from #875 Co-Authored-By: Théophane Hufschmitt <theophane.hufschmitt@tweag.io> Co-Authored-By: Alexander Sosedkin <monk@unboiled.info> Co-Authored-By: Andrea Ciceri <andrea.ciceri@autistici.org> Co-Authored-By: Charlotte 🦝 Delenk Mlotte@chir.rs> Co-Authored-By: Sandro Jäckel <sandro.jaeckel@gmail.com>
48 lines
982 B
C++
48 lines
982 B
C++
#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);
|