diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-07-20 03:15:45 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-12-13 19:20:01 +0100 |
commit | f3ff1da42479eda7826d1bcb10e3a067e62a2daa (patch) | |
tree | 3669692c32e72c9f62c0760c9c2d208757fc24f6 /nix/libstore/store-api.hh | |
parent | 1509a1dc82839814828bb5883803c6f58df732c4 (diff) | |
download | guix-f3ff1da42479eda7826d1bcb10e3a067e62a2daa.tar guix-f3ff1da42479eda7826d1bcb10e3a067e62a2daa.tar.gz |
daemon: Better distinguish build statuses.
In Nix itself, the new 'BuildResult' type is returned by the new
'buildDerivation' method, which we don't have and need.
* nix/libstore/build.cc (Goal)[cancel]: Remove.
[timeOut]: New pure virtual method.
(DerivationGoal)[result]: New field.
[cancel]: Remove.
[timedOut, getResult, done]: New methods.
(DerivationGoal::cancel): Remove.
(DerivationGoal::timedOut): New method.
(DerivationGoal::haveDerivation): Call 'done' instead of 'amDone'.
(DerivationGoal::outputsSubstituted): Ditto.
(DerivationGoal::inputsRealised): Ditto.
(DerivationGoal::buildDone): Ditto.
(DerivationGoal::handleChildOutput): Call 'timedOut' instead of
'cancel'.
(DerivationGoal::done): New method.
(SubstitutionGoal)[cancel]: Remove.
[timedOut]: New method.
(SubstitutionGoal::cancel): Remove.
(SubstitutionGoal::timedOut): New method.
(Worker::waitForInput): Use it.
* nix/libstore/store-api.hh (BuildResult): New struct.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'nix/libstore/store-api.hh')
-rw-r--r-- | nix/libstore/store-api.hh | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh index 9403cbee19..3e982f6dd3 100644 --- a/nix/libstore/store-api.hh +++ b/nix/libstore/store-api.hh @@ -106,6 +106,30 @@ typedef list<ValidPathInfo> ValidPathInfos; enum BuildMode { bmNormal, bmRepair, bmCheck }; +struct BuildResult +{ + enum Status { + Built = 0, + Substituted, + AlreadyValid, + PermanentFailure, + InputRejected, + OutputRejected, + TransientFailure, // possibly transient + CachedFailure, + TimedOut, + MiscFailure, + DependencyFailed, + LogLimitExceeded, + NotDeterministic, + } status = MiscFailure; + std::string errorMsg; + //time_t startTime = 0, stopTime = 0; + bool success() { + return status == Built || status == Substituted || status == AlreadyValid; + } +}; + class StoreAPI { |