guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

07/118: Add constant ‘nixPath’


From: Ludovic Courtès
Subject: 07/118: Add constant ‘nixPath’
Date: Tue, 19 May 2015 14:45:09 +0000

civodul pushed a commit to branch nix
in repository guix.

commit a8edf185a9e1677088c8c30acc9d281c8350bca7
Author: Eelco Dolstra <address@hidden>
Date:   Mon May 26 14:55:47 2014 +0200

    Add constant ‘nixPath’
    
    It contains the Nix expression search path as a list of { prefix, path
    } sets, e.g.
    
      [ { path = "/nix/var/nix/profiles/per-user/root/channels/nixos"; prefix = 
""; }
        { path = "/etc/nixos/configuration.nix"; prefix = "nixos-config"; }
        { path = "/home/eelco/Dev/nix/inst/share/nix/corepkgs"; prefix = "nix"; 
}
      ]
---
 src/libexpr/primops.cc               |   11 +++++++++++
 tests/lang.sh                        |    2 +-
 tests/lang/eval-okay-search-path.nix |    9 ++++++++-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 533ae37..e492ff6 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -1352,6 +1352,17 @@ void EvalState::createBaseEnv()
     evalFile(path, v);
     addConstant("derivation", v);
 
+    /* Add a value containing the current Nix expression search path. */
+    mkList(v, searchPath.size());
+    int n = 0;
+    for (auto & i : searchPath) {
+        Value * v2 = v.list.elems[n++] = allocValue();
+        mkAttrs(*v2, 2);
+        mkString(*allocAttr(*v2, symbols.create("path")), i.second);
+        mkString(*allocAttr(*v2, symbols.create("prefix")), i.first);
+    }
+    addConstant("nixPath", v);
+
     /* Now that we've added all primops, sort the `builtins' set,
        because attribute lookups expect it to be sorted. */
     baseEnv.values[0]->attrs->sort();
diff --git a/tests/lang.sh b/tests/lang.sh
index bb3b9ca..7157a68 100644
--- a/tests/lang.sh
+++ b/tests/lang.sh
@@ -46,7 +46,7 @@ for i in lang/eval-okay-*.nix; do
         if test -e lang/$i.flags; then
             flags=$(cat lang/$i.flags)
         fi
-        if ! NIX_PATH=lang/dir3:lang/dir4_PATH nix-instantiate $flags --eval 
--strict lang/$i.nix > lang/$i.out; then
+        if ! NIX_PATH=lang/dir3:lang/dir4 nix-instantiate $flags --eval 
--strict lang/$i.nix > lang/$i.out; then
             echo "FAIL: $i should evaluate"
             fail=1
         elif ! diff lang/$i.out lang/$i.exp; then
diff --git a/tests/lang/eval-okay-search-path.nix 
b/tests/lang/eval-okay-search-path.nix
index 9b71150..c9ea768 100644
--- a/tests/lang/eval-okay-search-path.nix
+++ b/tests/lang/eval-okay-search-path.nix
@@ -1,3 +1,10 @@
-assert builtins.pathExists <nix/buildenv.nix>;
+with import ./lib.nix;
+with builtins;
+
+assert pathExists <nix/buildenv.nix>;
+
+assert length nixPath == 3;
+assert length (filter (x: x.prefix == "nix") nixPath) == 1;
+assert length (filter (x: baseNameOf x.path == "dir4") nixPath) == 1;
 
 import <a.nix> + import <b.nix> + import <c.nix> + import <dir5/c.nix>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]