aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/nix-build/nix-build.cc28
-rw-r--r--src/nix-instantiate/nix-instantiate.cc20
-rw-r--r--src/nix-prefetch-url/nix-prefetch-url.cc28
-rw-r--r--src/nix/repl.cc4
-rw-r--r--src/nix/upgrade-nix.cc12
5 files changed, 46 insertions, 46 deletions
diff --git a/src/nix-build/nix-build.cc b/src/nix-build/nix-build.cc
index 21d99878a..de0e9118f 100755
--- a/src/nix-build/nix-build.cc
+++ b/src/nix-build/nix-build.cc
@@ -239,10 +239,10 @@ void mainWrapped(int argc, char * * argv)
auto store = openStore();
- EvalState state(myArgs.searchPath, store);
- state.repair = repair;
+ auto state = std::make_unique<EvalState>(myArgs.searchPath, store);
+ state->repair = repair;
- Bindings & autoArgs = *myArgs.getAutoArgs(state);
+ Bindings & autoArgs = *myArgs.getAutoArgs(*state);
if (packages) {
std::ostringstream joined;
@@ -268,7 +268,7 @@ void mainWrapped(int argc, char * * argv)
std::vector<Expr *> exprs;
if (readStdin)
- exprs = {state.parseStdin()};
+ exprs = {state->parseStdin()};
else
for (auto i : left) {
auto absolute = i;
@@ -276,13 +276,13 @@ void mainWrapped(int argc, char * * argv)
absolute = canonPath(absPath(i), true);
} catch (Error e) {};
if (fromArgs)
- exprs.push_back(state.parseExprFromString(i, absPath(".")));
+ exprs.push_back(state->parseExprFromString(i, absPath(".")));
else if (store->isStorePath(absolute) && std::regex_match(absolute, std::regex(".*\\.drv(!.*)?")))
- drvs.push_back(DrvInfo(state, store, absolute));
+ drvs.push_back(DrvInfo(*state, store, absolute));
else
/* If we're in a #! script, interpret filenames
relative to the script. */
- exprs.push_back(state.parseExprFromFile(resolveExprPath(state.checkSourcePath(lookupFileArg(state,
+ exprs.push_back(state->parseExprFromFile(resolveExprPath(state->checkSourcePath(lookupFileArg(*state,
inShebang && !packages ? absPath(i, absPath(dirOf(script))) : i)))));
}
@@ -291,12 +291,12 @@ void mainWrapped(int argc, char * * argv)
for (auto e : exprs) {
Value vRoot;
- state.eval(e, vRoot);
+ state->eval(e, vRoot);
for (auto & i : attrPaths) {
- Value & v(*findAlongAttrPath(state, i, autoArgs, vRoot));
- state.forceValue(v);
- getDerivations(state, v, "", autoArgs, drvs, false);
+ Value & v(*findAlongAttrPath(*state, i, autoArgs, vRoot));
+ state->forceValue(v);
+ getDerivations(*state, v, "", autoArgs, drvs, false);
}
}
@@ -332,12 +332,12 @@ void mainWrapped(int argc, char * * argv)
if (shell == "") {
try {
- auto expr = state.parseExprFromString("(import <nixpkgs> {}).bashInteractive", absPath("."));
+ auto expr = state->parseExprFromString("(import <nixpkgs> {}).bashInteractive", absPath("."));
Value v;
- state.eval(expr, v);
+ state->eval(expr, v);
- auto drv = getDerivation(state, v, false);
+ auto drv = getDerivation(*state, v, false);
if (!drv)
throw Error("the 'bashInteractive' attribute in <nixpkgs> did not evaluate to a derivation");
diff --git a/src/nix-instantiate/nix-instantiate.cc b/src/nix-instantiate/nix-instantiate.cc
index 5049460c7..eb6d34dd8 100644
--- a/src/nix-instantiate/nix-instantiate.cc
+++ b/src/nix-instantiate/nix-instantiate.cc
@@ -158,16 +158,16 @@ int main(int argc, char * * argv)
auto store = openStore();
- EvalState state(myArgs.searchPath, store);
- state.repair = repair;
+ auto state = std::make_unique<EvalState>(myArgs.searchPath, store);
+ state->repair = repair;
- Bindings & autoArgs = *myArgs.getAutoArgs(state);
+ Bindings & autoArgs = *myArgs.getAutoArgs(*state);
if (attrPaths.empty()) attrPaths = {""};
if (findFile) {
for (auto & i : files) {
- Path p = state.findFile(i);
+ Path p = state->findFile(i);
if (p == "") throw Error(format("unable to find '%1%'") % i);
std::cout << p << std::endl;
}
@@ -175,20 +175,20 @@ int main(int argc, char * * argv)
}
if (readStdin) {
- Expr * e = state.parseStdin();
- processExpr(state, attrPaths, parseOnly, strict, autoArgs,
+ Expr * e = state->parseStdin();
+ processExpr(*state, attrPaths, parseOnly, strict, autoArgs,
evalOnly, outputKind, xmlOutputSourceLocation, e);
} else if (files.empty() && !fromArgs)
files.push_back("./default.nix");
for (auto & i : files) {
Expr * e = fromArgs
- ? state.parseExprFromString(i, absPath("."))
- : state.parseExprFromFile(resolveExprPath(state.checkSourcePath(lookupFileArg(state, i))));
- processExpr(state, attrPaths, parseOnly, strict, autoArgs,
+ ? state->parseExprFromString(i, absPath("."))
+ : state->parseExprFromFile(resolveExprPath(state->checkSourcePath(lookupFileArg(*state, i))));
+ processExpr(*state, attrPaths, parseOnly, strict, autoArgs,
evalOnly, outputKind, xmlOutputSourceLocation, e);
}
- state.printStats();
+ state->printStats();
});
}
diff --git a/src/nix-prefetch-url/nix-prefetch-url.cc b/src/nix-prefetch-url/nix-prefetch-url.cc
index fa7ee2545..50b2c2803 100644
--- a/src/nix-prefetch-url/nix-prefetch-url.cc
+++ b/src/nix-prefetch-url/nix-prefetch-url.cc
@@ -95,9 +95,9 @@ int main(int argc, char * * argv)
throw UsageError("too many arguments");
auto store = openStore();
- EvalState state(myArgs.searchPath, store);
+ auto state = std::make_unique<EvalState>(myArgs.searchPath, store);
- Bindings & autoArgs = *myArgs.getAutoArgs(state);
+ Bindings & autoArgs = *myArgs.getAutoArgs(*state);
/* If -A is given, get the URI from the specified Nix
expression. */
@@ -107,33 +107,33 @@ int main(int argc, char * * argv)
throw UsageError("you must specify a URI");
uri = args[0];
} else {
- Path path = resolveExprPath(lookupFileArg(state, args.empty() ? "." : args[0]));
+ Path path = resolveExprPath(lookupFileArg(*state, args.empty() ? "." : args[0]));
Value vRoot;
- state.evalFile(path, vRoot);
- Value & v(*findAlongAttrPath(state, attrPath, autoArgs, vRoot));
- state.forceAttrs(v);
+ state->evalFile(path, vRoot);
+ Value & v(*findAlongAttrPath(*state, attrPath, autoArgs, vRoot));
+ state->forceAttrs(v);
/* Extract the URI. */
- auto attr = v.attrs->find(state.symbols.create("urls"));
+ auto attr = v.attrs->find(state->symbols.create("urls"));
if (attr == v.attrs->end())
throw Error("attribute set does not contain a 'urls' attribute");
- state.forceList(*attr->value);
+ state->forceList(*attr->value);
if (attr->value->listSize() < 1)
throw Error("'urls' list is empty");
- uri = state.forceString(*attr->value->listElems()[0]);
+ uri = state->forceString(*attr->value->listElems()[0]);
/* Extract the hash mode. */
- attr = v.attrs->find(state.symbols.create("outputHashMode"));
+ attr = v.attrs->find(state->symbols.create("outputHashMode"));
if (attr == v.attrs->end())
printInfo("warning: this does not look like a fetchurl call");
else
- unpack = state.forceString(*attr->value) == "recursive";
+ unpack = state->forceString(*attr->value) == "recursive";
/* Extract the name. */
if (name.empty()) {
- attr = v.attrs->find(state.symbols.create("name"));
+ attr = v.attrs->find(state->symbols.create("name"));
if (attr != v.attrs->end())
- name = state.forceString(*attr->value);
+ name = state->forceString(*attr->value);
}
}
@@ -158,7 +158,7 @@ int main(int argc, char * * argv)
if (storePath.empty()) {
- auto actualUri = resolveMirrorUri(state, uri);
+ auto actualUri = resolveMirrorUri(*state, uri);
/* Download the file. */
DownloadRequest req(actualUri);
diff --git a/src/nix/repl.cc b/src/nix/repl.cc
index f84774a53..4723a1974 100644
--- a/src/nix/repl.cc
+++ b/src/nix/repl.cc
@@ -693,8 +693,8 @@ struct CmdRepl : StoreCommand, MixEvalArgs
void run(ref<Store> store) override
{
- NixRepl repl(searchPath, openStore());
- repl.mainLoop(files);
+ auto repl = std::make_unique<NixRepl>(searchPath, openStore());
+ repl->mainLoop(files);
}
};
diff --git a/src/nix/upgrade-nix.cc b/src/nix/upgrade-nix.cc
index 21892c31a..e23ae7923 100644
--- a/src/nix/upgrade-nix.cc
+++ b/src/nix/upgrade-nix.cc
@@ -118,13 +118,13 @@ struct CmdUpgradeNix : StoreCommand
auto req = DownloadRequest("https://github.com/NixOS/nixpkgs/raw/master/nixos/modules/installer/tools/nix-fallback-paths.nix");
auto res = getDownloader()->download(req);
- EvalState state(Strings(), store);
- auto v = state.allocValue();
- state.eval(state.parseExprFromString(*res.data, "/no-such-path"), *v);
- Bindings & bindings(*state.allocBindings(0));
- auto v2 = findAlongAttrPath(state, settings.thisSystem, bindings, *v);
+ auto state = std::make_unique<EvalState>(Strings(), store);
+ auto v = state->allocValue();
+ state->eval(state->parseExprFromString(*res.data, "/no-such-path"), *v);
+ Bindings & bindings(*state->allocBindings(0));
+ auto v2 = findAlongAttrPath(*state, settings.thisSystem, bindings, *v);
- return state.forceString(*v2);
+ return state->forceString(*v2);
}
};