diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2015-12-08 22:50:18 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-12-08 23:58:12 +0100 |
commit | b23b4d394a39b60188ed74ecdf1027bc7dd5b9b3 (patch) | |
tree | 1be78e8e089d88a4c553a5d328a4a6ebc58338ed /nix/libstore/store-api.hh | |
parent | 7fbee931a5565a009e23f785c5874a55a905626f (diff) | |
download | guix-b23b4d394a39b60188ed74ecdf1027bc7dd5b9b3.tar guix-b23b4d394a39b60188ed74ecdf1027bc7dd5b9b3.tar.gz |
daemon: Allow builds to be repeated.
This makes it easy to detect non-deterministic builds.
* nix/libstore/build.cc (DerivationGoal): Remove 'InodesSeen'; add
'curRound', 'nrRound', and 'prevInfos'.
(DerivationGoal::inputsRealised): Initialize 'nrRound'.
(NotDeterministic): New error type.
(DerivationGoal::buildDone): Check whether we need to repeat.
(DerivationGoal::startBuilder): Adjust message.
(DerivationGoal::registerOutputs): Check whether we get the same result.
* nix/libstore/globals.cc (Settings::get(const string & name, int def)):
New method.
* nix/libstore/globals.hh (Settings): Add it.
* nix/libstore/store-api.hh (ValidPathInfo): Add operator ==.
* nix/nix-daemon/nix-daemon.cc (performOp): Allow "build-repeat" for
"untrusted" users.
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 | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/nix/libstore/store-api.hh b/nix/libstore/store-api.hh index 3764f3e542..9403cbee19 100644 --- a/nix/libstore/store-api.hh +++ b/nix/libstore/store-api.hh @@ -88,10 +88,17 @@ struct ValidPathInfo Path deriver; Hash hash; PathSet references; - time_t registrationTime; - unsigned long long narSize; // 0 = unknown + time_t registrationTime = 0; + unsigned long long narSize = 0; // 0 = unknown unsigned long long id; // internal use only - ValidPathInfo() : registrationTime(0), narSize(0) { } + + bool operator == (const ValidPathInfo & i) const + { + return + path == i.path + && hash == i.hash + && references == i.references; + } }; typedef list<ValidPathInfo> ValidPathInfos; |