about summary refs log tree commit diff
path: root/src/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-05-12T13·42+0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-05-30T13·18+0200
commitb66ab6cdbce5f4ac2db8976872547680242166e8 (patch)
treed18eeea5ee95602bf3fe252ee97708f0899e1610 /src/libstore
parent3be2e71ab31200e3d263d6d2aeb4bf85462156a0 (diff)
Fix repair during substitution
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/build.cc3
-rw-r--r--src/libstore/store-api.cc4
-rw-r--r--src/libstore/store-api.hh2
3 files changed, 5 insertions, 4 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 81c79435ef8b..a6f8dfabac00 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -3198,7 +3198,8 @@ void SubstitutionGoal::tryToRun()
             /* Wake up the worker loop when we're done. */
             Finally updateStats([this]() { outPipe.writeSide.close(); });
 
-            copyStorePath(ref<Store>(sub), ref<Store>(worker.store.shared_from_this()), storePath);
+            copyStorePath(ref<Store>(sub), ref<Store>(worker.store.shared_from_this()),
+                storePath, repair);
 
             promise.set_value();
         } catch (...) {
diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc
index 8600def627fa..f39d6b54787c 100644
--- a/src/libstore/store-api.cc
+++ b/src/libstore/store-api.cc
@@ -358,14 +358,14 @@ const Store::Stats & Store::getStats()
 
 
 void copyStorePath(ref<Store> srcStore, ref<Store> dstStore,
-    const Path & storePath)
+    const Path & storePath, bool repair)
 {
     auto info = srcStore->queryPathInfo(storePath);
 
     StringSink sink;
     srcStore->narFromPath({storePath}, sink);
 
-    dstStore->addToStore(*info, *sink.s);
+    dstStore->addToStore(*info, *sink.s, repair);
 }
 
 
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index f680e951f895..65c4cdc97fc4 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -503,7 +503,7 @@ Path computeStorePathForText(const string & name, const string & s,
 
 /* Copy a path from one store to another. */
 void copyStorePath(ref<Store> srcStore, ref<Store> dstStore,
-    const Path & storePath);
+    const Path & storePath, bool repair = false);
 
 
 /* Remove the temporary roots file for this process.  Any temporary