aboutsummaryrefslogtreecommitdiff
path: root/src/nix-store/nix-store.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-store/nix-store.cc')
-rw-r--r--src/nix-store/nix-store.cc40
1 files changed, 2 insertions, 38 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index b873baacb..22effc65d 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -165,41 +165,6 @@ static void opPrintFixedPath(Strings opFlags, Strings opArgs)
}
-/* Place in `paths' the set of paths that are required to `realise'
- the given store path, i.e., all paths necessary for valid
- deployment of the path. For a derivation, this is the union of
- requisites of the inputs, plus the derivation; for other store
- paths, it is the set of paths in the FS closure of the path. If
- `includeOutputs' is true, include the requisites of the output
- paths of derivations as well.
-
- Note that this function can be used to implement three different
- deployment policies:
-
- - Source deployment (when called on a derivation).
- - Binary deployment (when called on an output path).
- - Source/binary deployment (when called on a derivation with
- `includeOutputs' set to true).
-*/
-static void storePathRequisites(const Path & storePath,
- bool includeOutputs, PathSet & paths)
-{
- computeFSClosure(storePath, paths);
-
- if (includeOutputs) {
- for (PathSet::iterator i = paths.begin();
- i != paths.end(); ++i)
- if (isDerivation(*i)) {
- Derivation drv = derivationFromPath(*i);
- for (DerivationOutputs::iterator j = drv.outputs.begin();
- j != drv.outputs.end(); ++j)
- if (store->isValidPath(j->second.path))
- computeFSClosure(j->second.path, paths);
- }
- }
-}
-
-
static Path maybeUseOutput(const Path & storePath, bool useOutput, bool forceRealise)
{
if (forceRealise) realisePath(storePath);
@@ -310,10 +275,9 @@ static void opQuery(Strings opFlags, Strings opArgs)
PathSet paths;
foreach (Strings::iterator, i, opArgs) {
Path path = maybeUseOutput(followLinksToStorePath(*i), useOutput, forceRealise);
- if (query == qRequisites)
- storePathRequisites(path, includeOutputs, paths);
+ if (query == qRequisites) computeFSClosure(path, paths, false, includeOutputs);
else if (query == qReferences) store->queryReferences(path, paths);
- else if (query == qReferrers) store->queryReferrers(path, paths);
+ else if (query == qReferrers) store->queryReferrers(path, paths);
else if (query == qReferrersClosure) computeFSClosure(path, paths, true);
}
Paths sorted = topoSortPaths(paths);