aboutsummaryrefslogtreecommitdiff
path: root/src/nix-build/nix-build.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-build/nix-build.cc')
-rwxr-xr-xsrc/nix-build/nix-build.cc37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/nix-build/nix-build.cc b/src/nix-build/nix-build.cc
index 34f1cba9d..33ad28704 100755
--- a/src/nix-build/nix-build.cc
+++ b/src/nix-build/nix-build.cc
@@ -16,6 +16,7 @@
#include "get-drvs.hh"
#include "common-eval-args.hh"
#include "attr-path.hh"
+#include "legacy.hh"
using namespace nix;
using namespace std::string_literals;
@@ -66,11 +67,8 @@ std::vector<string> shellwords(const string & s)
return res;
}
-void mainWrapped(int argc, char * * argv)
+static void _main(int argc, char * * argv)
{
- initNix();
- initGC();
-
auto dryRun = false;
auto runEnv = std::regex_search(argv[0], std::regex("nix-shell$"));
auto pure = false;
@@ -276,19 +274,21 @@ void mainWrapped(int argc, char * * argv)
exprs = {state->parseStdin()};
else
for (auto i : left) {
- auto absolute = i;
- try {
- absolute = canonPath(absPath(i), true);
- } catch (Error e) {};
if (fromArgs)
exprs.push_back(state->parseExprFromString(i, absPath(".")));
- else if (store->isStorePath(absolute) && std::regex_match(absolute, std::regex(".*\\.drv(!.*)?")))
+ else {
+ auto absolute = i;
+ try {
+ absolute = canonPath(absPath(i), true);
+ } catch (Error & e) {};
+ if (store->isStorePath(absolute) && std::regex_match(absolute, std::regex(".*\\.drv(!.*)?")))
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,
inShebang && !packages ? absPath(i, absPath(dirOf(script))) : i)))));
+ }
}
/* Evaluate them into derivations. */
@@ -305,6 +305,8 @@ void mainWrapped(int argc, char * * argv)
}
}
+ state->printStats();
+
auto buildPaths = [&](const PathSet & paths) {
/* Note: we do this even when !printMissing to efficiently
fetch binary cache data. */
@@ -415,17 +417,20 @@ void mainWrapped(int argc, char * * argv)
"dontAddDisableDepTrack=1; "
"[ -e $stdenv/setup ] && source $stdenv/setup; "
"%3%"
+ "PATH=\"%4%:$PATH\"; "
+ "SHELL=%5%; "
"set +e; "
R"s([ -n "$PS1" ] && PS1='\n\[\033[1;32m\][nix-shell:\w]\$\[\033[0m\] '; )s"
"if [ \"$(type -t runHook)\" = function ]; then runHook shellHook; fi; "
"unset NIX_ENFORCE_PURITY; "
- "unset NIX_INDENT_MAKE; "
"shopt -u nullglob; "
- "unset TZ; %4%"
- "%5%",
+ "unset TZ; %6%"
+ "%7%",
(Path) tmpDir,
(pure ? "" : "p=$PATH; "),
(pure ? "" : "PATH=$PATH:$p; unset p; "),
+ dirOf(shell),
+ shell,
(getenv("TZ") ? (string("export TZ='") + getenv("TZ") + "'; ") : ""),
envCommand));
@@ -499,9 +504,5 @@ void mainWrapped(int argc, char * * argv)
}
}
-int main(int argc, char * * argv)
-{
- return handleExceptions(argv[0], [&]() {
- return mainWrapped(argc, argv);
- });
-}
+static RegisterLegacyCommand s1("nix-build", _main);
+static RegisterLegacyCommand s2("nix-shell", _main);