summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2017-03-05 21:41:18 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2017-08-01 17:40:54 -0700
commit36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd (patch)
treef5e59d97ee4a0ef7e51ceb86f8d8a7319621df71
parentb9606e3157652b6fd65868afd44f6fc1fb02d204 (diff)
downloadspack-36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd.tar.gz
spack-36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd.tar.bz2
spack-36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd.tar.xz
spack-36b3dd8cfe1b932bd60f13606e9bfe23d8d91ffd.zip
Package.possible_dependencies() descends into virtuals.
-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