about summary refs log tree commit diff
path: root/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-08-23T15·11+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-08-23T15·11+0200
commitd74236d1f2c3bca4fcc8cb1574fb962e813f69d3 (patch)
tree0ec4d387e04e9a79835efebd85753aeb5a00d251 /src/libexpr
parent22d6e31fc6a9de2ee424984e629ccd2e394ba512 (diff)
nix build: Use Nix search path
That is, unless --file is specified, the Nix search path is
synthesized into an attribute set. Thus you can say

  $ nix build nixpkgs.hello

assuming $NIX_PATH contains an entry of the form "nixpkgs=...". This
is more verbose than

  $ nix build hello

but is less ambiguous.
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/eval.cc7
-rw-r--r--src/libexpr/eval.hh6
2 files changed, 8 insertions, 5 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 0833603b2a9e..625888b19fcb 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -379,9 +379,9 @@ void EvalState::addPrimOp(const string & name,
 }
 
 
-void EvalState::getBuiltin(const string & name, Value & v)
+Value & EvalState::getBuiltin(const string & name)
 {
-    v = *baseEnv.values[0]->attrs->find(symbols.create(name))->value;
+    return *baseEnv.values[0]->attrs->find(symbols.create(name))->value;
 }
 
 
@@ -462,7 +462,7 @@ void mkString(Value & v, const char * s)
 }
 
 
-void mkString(Value & v, const string & s, const PathSet & context)
+Value & mkString(Value & v, const string & s, const PathSet & context)
 {
     mkString(v, s.c_str());
     if (!context.empty()) {
@@ -473,6 +473,7 @@ void mkString(Value & v, const string & s, const PathSet & context)
             v.string.context[n++] = dupString(i.c_str());
         v.string.context[n] = 0;
     }
+    return v;
 }
 
 
diff --git a/src/libexpr/eval.hh b/src/libexpr/eval.hh
index 80e369f2d68f..47e4d99bf6ed 100644
--- a/src/libexpr/eval.hh
+++ b/src/libexpr/eval.hh
@@ -43,7 +43,7 @@ struct Env
 };
 
 
-void mkString(Value & v, const string & s, const PathSet & context = PathSet());
+Value & mkString(Value & v, const string & s, const PathSet & context = PathSet());
 
 void copyContext(const Value & v, PathSet & context);
 
@@ -108,6 +108,8 @@ public:
 
     void addToSearchPath(const string & s);
 
+    SearchPath getSearchPath() { return searchPath; }
+
     Path checkSourcePath(const Path & path);
 
     /* Parse a Nix expression from the specified file. */
@@ -204,7 +206,7 @@ private:
 
 public:
 
-    void getBuiltin(const string & name, Value & v);
+    Value & getBuiltin(const string & name);
 
 private: