mirror of
https://github.com/NixOS/nix
synced 2025-06-27 08:31:16 +02:00
Add a function queryValidPaths()
queryValidPaths() combines multiple calls to isValidPath() in one. This matters when using the Nix daemon because it reduces latency. For instance, on "nix-env -qas \*" it reduces execution time from 5.7s to 4.7s (which is indistinguishable from the non-daemon case).
This commit is contained in:
parent
667d5f1936
commit
58ef4d9a95
8 changed files with 49 additions and 3 deletions
|
@ -932,6 +932,7 @@ static void opQuery(Globals & globals,
|
|||
|
||||
/* Query which paths have substitutes. */
|
||||
SubstitutablePathInfos subs;
|
||||
PathSet validPaths;
|
||||
if (printStatus) {
|
||||
PathSet paths;
|
||||
foreach (vector<DrvInfo>::iterator, i, elems2)
|
||||
|
@ -941,6 +942,7 @@ static void opQuery(Globals & globals,
|
|||
printMsg(lvlTalkative, format("skipping derivation named `%1%' which gives an assertion failure") % i->name);
|
||||
i->setFailed();
|
||||
}
|
||||
validPaths = store->queryValidPaths(paths);
|
||||
store->querySubstitutablePathInfos(paths, subs);
|
||||
}
|
||||
|
||||
|
@ -966,9 +968,10 @@ static void opQuery(Globals & globals,
|
|||
XMLAttrs attrs;
|
||||
|
||||
if (printStatus) {
|
||||
bool hasSubs = subs.find(i->queryOutPath(globals.state)) != subs.end();
|
||||
bool isInstalled = installed.find(i->queryOutPath(globals.state)) != installed.end();
|
||||
bool isValid = store->isValidPath(i->queryOutPath(globals.state));
|
||||
Path outPath = i->queryOutPath(globals.state);
|
||||
bool hasSubs = subs.find(outPath) != subs.end();
|
||||
bool isInstalled = installed.find(outPath) != installed.end();
|
||||
bool isValid = validPaths.find(outPath) != validPaths.end();
|
||||
if (xmlOutput) {
|
||||
attrs["installed"] = isInstalled ? "1" : "0";
|
||||
attrs["valid"] = isValid ? "1" : "0";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue