Merge pull request #6189 from obsidiansystems/build-result-header
Move `BuildResult` defintion to its own header
This commit is contained in:
commit
03df331c3f
8 changed files with 84 additions and 65 deletions
|
@ -14,6 +14,7 @@
|
||||||
#include "pathlocks.hh"
|
#include "pathlocks.hh"
|
||||||
#include "globals.hh"
|
#include "globals.hh"
|
||||||
#include "serialise.hh"
|
#include "serialise.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "store-api.hh"
|
#include "store-api.hh"
|
||||||
#include "derivations.hh"
|
#include "derivations.hh"
|
||||||
#include "local-store.hh"
|
#include "local-store.hh"
|
||||||
|
|
77
src/libstore/build-result.hh
Normal file
77
src/libstore/build-result.hh
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "realisation.hh"
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
|
||||||
|
namespace nix {
|
||||||
|
|
||||||
|
struct BuildResult
|
||||||
|
{
|
||||||
|
/* Note: don't remove status codes, and only add new status codes
|
||||||
|
at the end of the list, to prevent client/server
|
||||||
|
incompatibilities in the nix-store --serve protocol. */
|
||||||
|
enum Status {
|
||||||
|
Built = 0,
|
||||||
|
Substituted,
|
||||||
|
AlreadyValid,
|
||||||
|
PermanentFailure,
|
||||||
|
InputRejected,
|
||||||
|
OutputRejected,
|
||||||
|
TransientFailure, // possibly transient
|
||||||
|
CachedFailure, // no longer used
|
||||||
|
TimedOut,
|
||||||
|
MiscFailure,
|
||||||
|
DependencyFailed,
|
||||||
|
LogLimitExceeded,
|
||||||
|
NotDeterministic,
|
||||||
|
ResolvesToAlreadyValid,
|
||||||
|
} status = MiscFailure;
|
||||||
|
std::string errorMsg;
|
||||||
|
|
||||||
|
std::string toString() const {
|
||||||
|
auto strStatus = [&]() {
|
||||||
|
switch (status) {
|
||||||
|
case Built: return "Built";
|
||||||
|
case Substituted: return "Substituted";
|
||||||
|
case AlreadyValid: return "AlreadyValid";
|
||||||
|
case PermanentFailure: return "PermanentFailure";
|
||||||
|
case InputRejected: return "InputRejected";
|
||||||
|
case OutputRejected: return "OutputRejected";
|
||||||
|
case TransientFailure: return "TransientFailure";
|
||||||
|
case CachedFailure: return "CachedFailure";
|
||||||
|
case TimedOut: return "TimedOut";
|
||||||
|
case MiscFailure: return "MiscFailure";
|
||||||
|
case DependencyFailed: return "DependencyFailed";
|
||||||
|
case LogLimitExceeded: return "LogLimitExceeded";
|
||||||
|
case NotDeterministic: return "NotDeterministic";
|
||||||
|
case ResolvesToAlreadyValid: return "ResolvesToAlreadyValid";
|
||||||
|
default: return "Unknown";
|
||||||
|
};
|
||||||
|
}();
|
||||||
|
return strStatus + ((errorMsg == "") ? "" : " : " + errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* How many times this build was performed. */
|
||||||
|
unsigned int timesBuilt = 0;
|
||||||
|
|
||||||
|
/* If timesBuilt > 1, whether some builds did not produce the same
|
||||||
|
result. (Note that 'isNonDeterministic = false' does not mean
|
||||||
|
the build is deterministic, just that we don't have evidence of
|
||||||
|
non-determinism.) */
|
||||||
|
bool isNonDeterministic = false;
|
||||||
|
|
||||||
|
DrvOutputs builtOutputs;
|
||||||
|
|
||||||
|
/* The start/stop times of the build (or one of the rounds, if it
|
||||||
|
was repeated). */
|
||||||
|
time_t startTime = 0, stopTime = 0;
|
||||||
|
|
||||||
|
bool success() {
|
||||||
|
return status == Built || status == Substituted || status == AlreadyValid || status == ResolvesToAlreadyValid;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "parsed-derivations.hh"
|
#include "parsed-derivations.hh"
|
||||||
#include "lock.hh"
|
#include "lock.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "store-api.hh"
|
#include "store-api.hh"
|
||||||
#include "pathlocks.hh"
|
#include "pathlocks.hh"
|
||||||
#include "goal.hh"
|
#include "goal.hh"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#include "daemon.hh"
|
#include "daemon.hh"
|
||||||
#include "monitor-fd.hh"
|
#include "monitor-fd.hh"
|
||||||
#include "worker-protocol.hh"
|
#include "worker-protocol.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "store-api.hh"
|
#include "store-api.hh"
|
||||||
#include "path-with-outputs.hh"
|
#include "path-with-outputs.hh"
|
||||||
#include "finally.hh"
|
#include "finally.hh"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "pool.hh"
|
#include "pool.hh"
|
||||||
#include "remote-store.hh"
|
#include "remote-store.hh"
|
||||||
#include "serve-protocol.hh"
|
#include "serve-protocol.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "store-api.hh"
|
#include "store-api.hh"
|
||||||
#include "path-with-outputs.hh"
|
#include "path-with-outputs.hh"
|
||||||
#include "worker-protocol.hh"
|
#include "worker-protocol.hh"
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "util.hh"
|
#include "util.hh"
|
||||||
#include "path-with-outputs.hh"
|
#include "path-with-outputs.hh"
|
||||||
#include "remote-fs-accessor.hh"
|
#include "remote-fs-accessor.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "remote-store.hh"
|
#include "remote-store.hh"
|
||||||
#include "worker-protocol.hh"
|
#include "worker-protocol.hh"
|
||||||
#include "archive.hh"
|
#include "archive.hh"
|
||||||
|
|
|
@ -131,72 +131,8 @@ struct GCResults
|
||||||
|
|
||||||
enum BuildMode { bmNormal, bmRepair, bmCheck };
|
enum BuildMode { bmNormal, bmRepair, bmCheck };
|
||||||
|
|
||||||
|
struct BuildResult;
|
||||||
|
|
||||||
struct BuildResult
|
|
||||||
{
|
|
||||||
/* Note: don't remove status codes, and only add new status codes
|
|
||||||
at the end of the list, to prevent client/server
|
|
||||||
incompatibilities in the nix-store --serve protocol. */
|
|
||||||
enum Status {
|
|
||||||
Built = 0,
|
|
||||||
Substituted,
|
|
||||||
AlreadyValid,
|
|
||||||
PermanentFailure,
|
|
||||||
InputRejected,
|
|
||||||
OutputRejected,
|
|
||||||
TransientFailure, // possibly transient
|
|
||||||
CachedFailure, // no longer used
|
|
||||||
TimedOut,
|
|
||||||
MiscFailure,
|
|
||||||
DependencyFailed,
|
|
||||||
LogLimitExceeded,
|
|
||||||
NotDeterministic,
|
|
||||||
ResolvesToAlreadyValid,
|
|
||||||
} status = MiscFailure;
|
|
||||||
std::string errorMsg;
|
|
||||||
|
|
||||||
std::string toString() const {
|
|
||||||
auto strStatus = [&]() {
|
|
||||||
switch (status) {
|
|
||||||
case Built: return "Built";
|
|
||||||
case Substituted: return "Substituted";
|
|
||||||
case AlreadyValid: return "AlreadyValid";
|
|
||||||
case PermanentFailure: return "PermanentFailure";
|
|
||||||
case InputRejected: return "InputRejected";
|
|
||||||
case OutputRejected: return "OutputRejected";
|
|
||||||
case TransientFailure: return "TransientFailure";
|
|
||||||
case CachedFailure: return "CachedFailure";
|
|
||||||
case TimedOut: return "TimedOut";
|
|
||||||
case MiscFailure: return "MiscFailure";
|
|
||||||
case DependencyFailed: return "DependencyFailed";
|
|
||||||
case LogLimitExceeded: return "LogLimitExceeded";
|
|
||||||
case NotDeterministic: return "NotDeterministic";
|
|
||||||
case ResolvesToAlreadyValid: return "ResolvesToAlreadyValid";
|
|
||||||
default: return "Unknown";
|
|
||||||
};
|
|
||||||
}();
|
|
||||||
return strStatus + ((errorMsg == "") ? "" : " : " + errorMsg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* How many times this build was performed. */
|
|
||||||
unsigned int timesBuilt = 0;
|
|
||||||
|
|
||||||
/* If timesBuilt > 1, whether some builds did not produce the same
|
|
||||||
result. (Note that 'isNonDeterministic = false' does not mean
|
|
||||||
the build is deterministic, just that we don't have evidence of
|
|
||||||
non-determinism.) */
|
|
||||||
bool isNonDeterministic = false;
|
|
||||||
|
|
||||||
DrvOutputs builtOutputs;
|
|
||||||
|
|
||||||
/* The start/stop times of the build (or one of the rounds, if it
|
|
||||||
was repeated). */
|
|
||||||
time_t startTime = 0, stopTime = 0;
|
|
||||||
|
|
||||||
bool success() {
|
|
||||||
return status == Built || status == Substituted || status == AlreadyValid || status == ResolvesToAlreadyValid;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct StoreConfig : public Config
|
struct StoreConfig : public Config
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include "derivations.hh"
|
#include "derivations.hh"
|
||||||
#include "dotgraph.hh"
|
#include "dotgraph.hh"
|
||||||
#include "globals.hh"
|
#include "globals.hh"
|
||||||
|
#include "build-result.hh"
|
||||||
#include "local-store.hh"
|
#include "local-store.hh"
|
||||||
#include "monitor-fd.hh"
|
#include "monitor-fd.hh"
|
||||||
#include "serve-protocol.hh"
|
#include "serve-protocol.hh"
|
||||||
|
|
Loading…
Reference in a new issue