about summary refs log tree commit diff
path: root/src/libstore/derivations.cc
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2011-09-12T09·07+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2011-09-12T09·07+0000
commit13114daa3e38abc5c84987830d9276b93251592f (patch)
tree9e26ad9846c4ea827fdc80cbdf9dc4848e39c455 /src/libstore/derivations.cc
parent281e3ed0590f253ef717a1f82123dfc569a110a1 (diff)
* Ouch. A store upgrade could cause a substituter to be triggered,
  causing a deadlock.

Diffstat (limited to 'src/libstore/derivations.cc')
-rw-r--r--src/libstore/derivations.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libstore/derivations.cc b/src/libstore/derivations.cc
index 5a0f4ecc69e0..97343d57d478 100644
--- a/src/libstore/derivations.cc
+++ b/src/libstore/derivations.cc
@@ -239,7 +239,8 @@ Hash hashDerivationModulo(StoreAPI & store, Derivation drv)
     foreach (DerivationInputs::const_iterator, i, drv.inputDrvs) {
         Hash h = drvHashes[i->first];
         if (h.type == htUnknown) {
-            Derivation drv2 = derivationFromPath(store, i->first);
+            assert(store.isValidPath(i->first));
+            Derivation drv2 = parseDerivation(readFile(i->first));
             h = hashDerivationModulo(store, drv2);
             drvHashes[i->first] = h;
         }