summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/package.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index 5729836873..ff8c629ee7 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -601,10 +601,19 @@ class PackageBase(with_metaclass(PackageMeta, object)):
visited.add(self.name)
for name in self.dependencies:
- if name not in visited and not spack.spec.Spec(name).virtual:
+ if name in visited:
+ continue
+
+ spec = spack.spec.Spec(name)
+ if not spec.virtual:
pkg = spack.repo.get(name)
for name in pkg.possible_dependencies(visited):
visited.add(name)
+ else:
+ for provider in spack.repo.providers_for(spec):
+ pkg = spack.repo.get(provider.name)
+ for name in pkg.possible_dependencies(visited):
+ visited.add(name)
return visited