aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/misc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/misc.cc')
-rw-r--r--src/libstore/misc.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/libstore/misc.cc b/src/libstore/misc.cc
index f2cc20626..01d6a97ae 100644
--- a/src/libstore/misc.cc
+++ b/src/libstore/misc.cc
@@ -27,10 +27,10 @@ void computeFSClosure(const Path & storePath,
store->queryReferences(storePath, references);
if (includeOutputs && isDerivation(storePath)) {
- Derivation drv = derivationFromPath(storePath);
- foreach (DerivationOutputs::iterator, i, drv.outputs)
- if (store->isValidPath(i->second.path))
- computeFSClosure(i->second.path, paths, flipDirection, true);
+ PathSet outputs = store->queryDerivationOutputs(storePath);
+ foreach (PathSet::iterator, i, outputs)
+ if (store->isValidPath(*i))
+ computeFSClosure(*i, paths, flipDirection, true);
}
foreach (PathSet::iterator, i, references)
@@ -48,9 +48,9 @@ Path findOutput(const Derivation & drv, string id)
void queryMissing(const PathSet & targets,
PathSet & willBuild, PathSet & willSubstitute, PathSet & unknown,
- unsigned long long & downloadSize)
+ unsigned long long & downloadSize, unsigned long long & narSize)
{
- downloadSize = 0;
+ downloadSize = narSize = 0;
PathSet todo(targets.begin(), targets.end()), done;
@@ -88,6 +88,7 @@ void queryMissing(const PathSet & targets,
if (store->querySubstitutablePathInfo(p, info)) {
willSubstitute.insert(p);
downloadSize += info.downloadSize;
+ narSize += info.narSize;
todo.insert(info.references.begin(), info.references.end());
} else
unknown.insert(p);