mirror of
https://github.com/NixOS/nix
synced 2025-06-28 17:51:15 +02:00
Store Attrs inside Bindings
This prevents a double allocation per attribute set.
This commit is contained in:
parent
0342eb1705
commit
5b58991a71
9 changed files with 101 additions and 60 deletions
|
@ -44,7 +44,7 @@ struct InstallSourceInfo
|
|||
Path nixExprPath; /* for srcNixExprDrvs, srcNixExprs */
|
||||
Path profile; /* for srcProfile */
|
||||
string systemFilter; /* for srcNixExprDrvs */
|
||||
Bindings autoArgs;
|
||||
Bindings * autoArgs;
|
||||
};
|
||||
|
||||
|
||||
|
@ -350,7 +350,7 @@ static void queryInstSources(EvalState & state,
|
|||
Nix expression. */
|
||||
DrvInfos allElems;
|
||||
loadDerivations(state, instSource.nixExprPath,
|
||||
instSource.systemFilter, instSource.autoArgs, "", allElems);
|
||||
instSource.systemFilter, *instSource.autoArgs, "", allElems);
|
||||
|
||||
elems = filterBySelector(state, allElems, args, newestOnly);
|
||||
|
||||
|
@ -373,7 +373,7 @@ static void queryInstSources(EvalState & state,
|
|||
Value vFun, vTmp;
|
||||
state.eval(eFun, vFun);
|
||||
mkApp(vTmp, vFun, vArg);
|
||||
getDerivations(state, vTmp, "", instSource.autoArgs, elems, true);
|
||||
getDerivations(state, vTmp, "", *instSource.autoArgs, elems, true);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -423,8 +423,8 @@ static void queryInstSources(EvalState & state,
|
|||
Value vRoot;
|
||||
loadSourceExpr(state, instSource.nixExprPath, vRoot);
|
||||
foreach (Strings::const_iterator, i, args) {
|
||||
Value & v(*findAlongAttrPath(state, *i, instSource.autoArgs, vRoot));
|
||||
getDerivations(state, v, "", instSource.autoArgs, elems, true);
|
||||
Value & v(*findAlongAttrPath(state, *i, *instSource.autoArgs, vRoot));
|
||||
getDerivations(state, v, "", *instSource.autoArgs, elems, true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -926,7 +926,7 @@ static void opQuery(Globals & globals, Strings opFlags, Strings opArgs)
|
|||
|
||||
if (source == sAvailable || compareVersions)
|
||||
loadDerivations(*globals.state, globals.instSource.nixExprPath,
|
||||
globals.instSource.systemFilter, globals.instSource.autoArgs,
|
||||
globals.instSource.systemFilter, *globals.instSource.autoArgs,
|
||||
attrPath, availElems);
|
||||
|
||||
DrvInfos elems_ = filterBySelector(*globals.state,
|
||||
|
@ -1423,7 +1423,7 @@ int main(int argc, char * * argv)
|
|||
if (file != "")
|
||||
globals.instSource.nixExprPath = lookupFileArg(*globals.state, file);
|
||||
|
||||
evalAutoArgs(*globals.state, autoArgs_, globals.instSource.autoArgs);
|
||||
globals.instSource.autoArgs = evalAutoArgs(*globals.state, autoArgs_);
|
||||
|
||||
if (globals.profile == "")
|
||||
globals.profile = getEnv("NIX_PROFILE", "");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue