Nix 2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
build-result.hh
Go to the documentation of this file.
1#pragma once
3
7
8#include <string>
9#include <chrono>
10#include <optional>
11
12namespace nix {
13
14struct KeyedBuildResult;
15
17{
24 enum Status {
25 Built = 0,
26 Substituted,
27 AlreadyValid,
28 PermanentFailure,
29 InputRejected,
30 OutputRejected,
35 TimedOut,
36 MiscFailure,
37 DependencyFailed,
38 LogLimitExceeded,
39 NotDeterministic,
40 ResolvesToAlreadyValid,
41 NoSubstituters,
42 } status = MiscFailure;
43
50 std::string errorMsg = {};
51
52 std::string toString() const {
53 auto strStatus = [&]() {
54 switch (status) {
55 case Built: return "Built";
56 case Substituted: return "Substituted";
57 case AlreadyValid: return "AlreadyValid";
58 case PermanentFailure: return "PermanentFailure";
59 case InputRejected: return "InputRejected";
60 case OutputRejected: return "OutputRejected";
61 case TransientFailure: return "TransientFailure";
62 case CachedFailure: return "CachedFailure";
63 case TimedOut: return "TimedOut";
64 case MiscFailure: return "MiscFailure";
65 case DependencyFailed: return "DependencyFailed";
66 case LogLimitExceeded: return "LogLimitExceeded";
67 case NotDeterministic: return "NotDeterministic";
68 case ResolvesToAlreadyValid: return "ResolvesToAlreadyValid";
69 case NoSubstituters: return "NoSubstituters";
70 default: return "Unknown";
71 };
72 }();
73 return strStatus + ((errorMsg == "") ? "" : " : " + errorMsg);
74 }
75
79 unsigned int timesBuilt = 0;
80
87 bool isNonDeterministic = false;
88
94
99 time_t startTime = 0, stopTime = 0;
100
104 std::optional<std::chrono::microseconds> cpuUser, cpuSystem;
105
107
108 bool success()
109 {
110 return status == Built || status == Substituted || status == AlreadyValid || status == ResolvesToAlreadyValid;
111 }
112
113 void rethrow()
114 {
115 throw Error("%s", errorMsg);
116 }
117
128 KeyedBuildResult restrictTo(DerivedPath path) const;
129};
130
141
142}
#define DECLARE_CMP(my_type)
Definition comparator.hh:33
std::map< OutputName, Realisation > SingleDrvOutputs
Definition realisation.hh:89
Definition build-result.hh:17
SingleDrvOutputs builtOutputs
Definition build-result.hh:93
time_t startTime
Definition build-result.hh:99
std::string errorMsg
Definition build-result.hh:50
KeyedBuildResult restrictTo(DerivedPath path) const
Definition build-result.cc:18
Status
Definition build-result.hh:24
@ TransientFailure
possibly transient
Definition build-result.hh:32
@ CachedFailure
no longer used
Definition build-result.hh:34
bool isNonDeterministic
Definition build-result.hh:87
unsigned int timesBuilt
Definition build-result.hh:79
std::optional< std::chrono::microseconds > cpuUser
Definition build-result.hh:104
Definition derived-path.hh:225
Definition build-result.hh:135
DerivedPath path
Definition build-result.hh:139