summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-03-11 16:41:22 +0100
committerEelco Dolstra <edolstra@gmail.com>2020-03-11 16:57:48 +0100
commit9950cdec3514949942a79c58764b1ea9bf9d5d57 (patch)
treee514f3102570c3e10034e0c1476b863ca289504e
parente02481ded216ffb5b06b413e3695d4e11e62e02f (diff)
Move some corepkgs into the nix binary
-rw-r--r--corepkgs/local.mk5
-rw-r--r--src/libexpr/imported-drv-to-derivation.nix (renamed from corepkgs/imported-drv-to-derivation.nix)0
-rw-r--r--src/libexpr/local.mk2
-rw-r--r--src/libexpr/primops.cc15
-rw-r--r--src/nix-env/buildenv.nix (renamed from corepkgs/buildenv.nix)0
-rw-r--r--src/nix-env/user-env.cc4
-rw-r--r--src/nix/local.mk2
-rw-r--r--tests/lang/eval-okay-search-path.nix2
8 files changed, 23 insertions, 7 deletions
diff --git a/corepkgs/local.mk b/corepkgs/local.mk
index 362c8eb61..2c72d3a31 100644
--- a/corepkgs/local.mk
+++ b/corepkgs/local.mk
@@ -1,4 +1,7 @@
-corepkgs_FILES = buildenv.nix unpack-channel.nix derivation.nix fetchurl.nix imported-drv-to-derivation.nix
+corepkgs_FILES = \
+ unpack-channel.nix \
+ derivation.nix \
+ fetchurl.nix
$(foreach file,config.nix $(corepkgs_FILES),$(eval $(call install-data-in,$(d)/$(file),$(datadir)/nix/corepkgs)))
diff --git a/corepkgs/imported-drv-to-derivation.nix b/src/libexpr/imported-drv-to-derivation.nix
index eab8b050e..eab8b050e 100644
--- a/corepkgs/imported-drv-to-derivation.nix
+++ b/src/libexpr/imported-drv-to-derivation.nix
diff --git a/src/libexpr/local.mk b/src/libexpr/local.mk
index 26b9f14ba..8a9b3c2ea 100644
--- a/src/libexpr/local.mk
+++ b/src/libexpr/local.mk
@@ -31,3 +31,5 @@ clean-files += $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexe
dist-files += $(d)/parser-tab.cc $(d)/parser-tab.hh $(d)/lexer-tab.cc $(d)/lexer-tab.hh
$(eval $(call install-file-in, $(d)/nix-expr.pc, $(prefix)/lib/pkgconfig, 0644))
+
+$(d)/primops.cc: $(d)/imported-drv-to-derivation.nix.gen.hh
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 4cd28698c..8de234951 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -121,10 +121,17 @@ static void prim_scopedImport(EvalState & state, const Pos & pos, Value * * args
mkString(*(outputsVal->listElems()[outputs_index++]), o.first);
}
w.attrs->sort();
- Value fun;
- state.evalFile(settings.nixDataDir + "/nix/corepkgs/imported-drv-to-derivation.nix", fun);
- state.forceFunction(fun, pos);
- mkApp(v, fun, w);
+
+ static Value * fun = nullptr;
+ if (!fun) {
+ fun = state.allocValue();
+ state.eval(state.parseExprFromString(
+ #include "imported-drv-to-derivation.nix.gen.hh"
+ , "/"), *fun);
+ }
+
+ state.forceFunction(*fun, pos);
+ mkApp(v, *fun, w);
state.forceAttrs(v, pos);
} else {
state.forceAttrs(*args[0]);
diff --git a/corepkgs/buildenv.nix b/src/nix-env/buildenv.nix
index 0bac4c44b..0bac4c44b 100644
--- a/corepkgs/buildenv.nix
+++ b/src/nix-env/buildenv.nix
diff --git a/src/nix-env/user-env.cc b/src/nix-env/user-env.cc
index 8e4ecda4e..717431b7a 100644
--- a/src/nix-env/user-env.cc
+++ b/src/nix-env/user-env.cc
@@ -106,7 +106,9 @@ bool createUserEnv(EvalState & state, DrvInfos & elems,
/* Get the environment builder expression. */
Value envBuilder;
- state.evalFile(state.findFile("nix/buildenv.nix"), envBuilder);
+ state.eval(state.parseExprFromString(
+ #include "buildenv.nix.gen.hh"
+ , "/"), envBuilder);
/* Construct a Nix expression that calls the user environment
builder with the manifest as argument. */
diff --git a/src/nix/local.mk b/src/nix/local.mk
index a34cca9fd..a486a37cc 100644
--- a/src/nix/local.mk
+++ b/src/nix/local.mk
@@ -23,3 +23,5 @@ $(foreach name, \
nix-build nix-channel nix-collect-garbage nix-copy-closure nix-daemon nix-env nix-hash nix-instantiate nix-prefetch-url nix-shell nix-store, \
$(eval $(call install-symlink, nix, $(bindir)/$(name))))
$(eval $(call install-symlink, $(bindir)/nix, $(libexecdir)/nix/build-remote))
+
+src/nix-env/nix-env.cc: src/nix-env/buildenv.nix.gen.hh
diff --git a/tests/lang/eval-okay-search-path.nix b/tests/lang/eval-okay-search-path.nix
index cca41f821..c5a123d04 100644
--- a/tests/lang/eval-okay-search-path.nix
+++ b/tests/lang/eval-okay-search-path.nix
@@ -1,7 +1,7 @@
with import ./lib.nix;
with builtins;
-assert pathExists <nix/buildenv.nix>;
+assert pathExists <nix/fetchurl.nix>;
assert length __nixPath == 6;
assert length (filter (x: x.prefix == "nix") __nixPath) == 1;