daemon: Allow builds to be repeated.
authorEelco Dolstra <eelco.dolstra@logicblox.com>
Tue, 8 Dec 2015 21:50:18 +0000 (22:50 +0100)
committerLudovic Courtès <ludo@gnu.org>
Tue, 8 Dec 2015 22:58:12 +0000 (23:58 +0100)
commitb23b4d394a39b60188ed74ecdf1027bc7dd5b9b3
tree1be78e8e089d88a4c553a5d328a4a6ebc58338ed
parent7fbee931a5565a009e23f785c5874a55a905626f
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>
nix/libstore/build.cc
nix/libstore/globals.cc
nix/libstore/globals.hh
nix/libstore/store-api.hh
nix/nix-daemon/nix-daemon.cc