summary refs log tree commit diff
path: root/src/nix-env
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-08-31 21:11:50 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-08-31 21:11:50 +0000
commit93227ff65c73e726c4ceef0cdd9439e7a4301417 (patch)
treeba7b60ca132c373913dd4a1c42a900009aeb8a77 /src/nix-env
parent5bcdc7e3517e6d679cad1aaba41e4deb76d5a6e7 (diff)
downloadguix-93227ff65c73e726c4ceef0cdd9439e7a4301417.tar.gz
* Eliminate all uses of the global variable ‘store’ from libstore.
  This should also fix:

    nix-instantiate: ./../boost/shared_ptr.hpp:254: T* boost::shared_ptr<T>::operator->() const [with T = nix::StoreAPI]: Assertion `px != 0' failed.

  which was caused by hashDerivationModulo() calling the ‘store’
  object (during store upgrades) before openStore() assigned it.

Diffstat (limited to 'src/nix-env')
-rw-r--r--src/nix-env/nix-env.cc8
-rw-r--r--src/nix-env/profiles.cc2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/nix-env/nix-env.cc b/src/nix-env/nix-env.cc
index 731f91bba0..3dfecb2d73 100644
--- a/src/nix-env/nix-env.cc
+++ b/src/nix-env/nix-env.cc
@@ -381,7 +381,7 @@ static void queryInstSources(EvalState & state,
 
                 if (isDerivation(path)) {
                     elem.setDrvPath(path);
-                    elem.setOutPath(findOutput(derivationFromPath(path), "out"));
+                    elem.setOutPath(findOutput(derivationFromPath(*store, path), "out"));
                     if (name.size() >= drvExtension.size() &&
                         string(name, name.size() - drvExtension.size()) == drvExtension)
                         name = string(name, 0, name.size() - drvExtension.size());
@@ -430,7 +430,7 @@ static void printMissing(EvalState & state, const DrvInfos & elems)
             targets.insert(i->queryOutPath(state));
     }
 
-    printMissing(targets);
+    printMissing(*store, targets);
 }
 
 
@@ -693,12 +693,12 @@ static void opSet(Globals & globals,
 
     if (drv.queryDrvPath(globals.state) != "") {
         PathSet paths = singleton<PathSet>(drv.queryDrvPath(globals.state));
-        printMissing(paths);
+        printMissing(*store, paths);
         if (globals.dryRun) return;
         store->buildDerivations(paths);
     }
     else {
-        printMissing(singleton<PathSet>(drv.queryOutPath(globals.state)));
+        printMissing(*store, singleton<PathSet>(drv.queryOutPath(globals.state)));
         if (globals.dryRun) return;
         store->ensurePath(drv.queryOutPath(globals.state));
     }
diff --git a/src/nix-env/profiles.cc b/src/nix-env/profiles.cc
index 60576f1ae7..5cc0d9a1cd 100644
--- a/src/nix-env/profiles.cc
+++ b/src/nix-env/profiles.cc
@@ -91,7 +91,7 @@ Path createGeneration(Path profile, Path outPath)
        user environment etc. we've just built. */
     Path generation;
     makeName(profile, num + 1, generation);
-    addPermRoot(outPath, generation, false, true);
+    addPermRoot(*store, outPath, generation, false, true);
 
     return generation;
 }