diff options
Diffstat (limited to 'src/nix-store/nix-store.cc')
-rw-r--r-- | src/nix-store/nix-store.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc index a8cb46319..c1e6afef0 100644 --- a/src/nix-store/nix-store.cc +++ b/src/nix-store/nix-store.cc @@ -424,10 +424,9 @@ static void opQuery(Strings opFlags, Strings opArgs) case qRoots: { PathSet referrers; for (auto & i : opArgs) { - PathSet paths = maybeUseOutputs(store->followLinksToStorePath(i), useOutput, forceRealise); - for (auto & j : paths) - store->computeFSClosure(j, referrers, true, - settings.gcKeepOutputs, settings.gcKeepDerivations); + store->computeFSClosure( + maybeUseOutputs(store->followLinksToStorePath(i), useOutput, forceRealise), + referrers, true, settings.gcKeepOutputs, settings.gcKeepDerivations); } Roots roots = store->findRoots(); for (auto & i : roots) @@ -841,6 +840,12 @@ static void opServe(Strings opFlags, Strings opArgs) settings.buildTimeout = readInt(in); if (GET_PROTOCOL_MINOR(clientVersion) >= 2) settings.maxLogSize = readInt(in); + if (GET_PROTOCOL_MINOR(clientVersion) >= 3) { + settings.set("build-repeat", std::to_string(readInt(in))); + settings.set("enforce-determinism", readInt(in) != 0 ? "true" : "false"); + settings.set("run-diff-hook", "true"); + } + settings.printRepeatedBuilds = false; }; while (true) { @@ -956,15 +961,17 @@ static void opServe(Strings opFlags, Strings opArgs) out << status.status << status.errorMsg; + if (GET_PROTOCOL_MINOR(clientVersion) >= 3) + out << status.timesBuilt << status.isNonDeterministic << status.startTime << status.stopTime; + break; } case cmdQueryClosure: { bool includeOutputs = readInt(in); - PathSet paths = readStorePaths<PathSet>(*store, in); PathSet closure; - for (auto & i : paths) - store->computeFSClosure(i, closure, false, includeOutputs); + store->computeFSClosure(readStorePaths<PathSet>(*store, in), + closure, false, includeOutputs); out << closure; break; } |