bugfix for dot graphs of virtual packages.
This commit is contained in:
parent
0a0291678e
commit
b4b8339d0d
@ -39,7 +39,7 @@ def setup_parser(subparser):
|
||||
'--dot', action='store_true',
|
||||
help="Generate graph in dot format and print to stdout.")
|
||||
|
||||
method.add_argument(
|
||||
subparser.add_argument(
|
||||
'--concretize', action='store_true', help="Concretize specs before graphing.")
|
||||
|
||||
subparser.add_argument(
|
||||
|
@ -46,6 +46,7 @@
|
||||
from llnl.util.tty.color import *
|
||||
|
||||
import spack
|
||||
from spack.spec import Spec
|
||||
|
||||
|
||||
def topological_sort(spec, **kwargs):
|
||||
@ -455,23 +456,28 @@ def quote(string):
|
||||
return '"%s"' % string
|
||||
|
||||
if not specs:
|
||||
packages = spack.db.all_packages()
|
||||
specs = [p.name for p in spack.db.all_packages()]
|
||||
else:
|
||||
packages = []
|
||||
for spec in specs:
|
||||
packages.extend(s.package for s in spec.normalized().traverse())
|
||||
roots = specs
|
||||
specs = set()
|
||||
for spec in roots:
|
||||
specs.update(Spec(s.name) for s in spec.normalized().traverse())
|
||||
|
||||
deps = []
|
||||
for pkg in packages:
|
||||
out.write(' %-30s [label="%s"]\n' % (quote(pkg.name), pkg.name))
|
||||
for spec in specs:
|
||||
out.write(' %-30s [label="%s"]\n' % (quote(spec.name), spec.name))
|
||||
|
||||
# Skip virtual specs (we'll find out about them from concrete ones.
|
||||
if spec.virtual:
|
||||
continue
|
||||
|
||||
# Add edges for each depends_on in the package.
|
||||
for dep_name, dep in pkg.dependencies.iteritems():
|
||||
deps.append((pkg.name, dep_name))
|
||||
for dep_name, dep in spec.package.dependencies.iteritems():
|
||||
deps.append((spec.name, dep_name))
|
||||
|
||||
# If the package provides something, add an edge for that.
|
||||
for provider in set(p.name for p in pkg.provided):
|
||||
deps.append((provider, pkg.name))
|
||||
for provider in set(s.name for s in spec.package.provided):
|
||||
deps.append((provider, spec.name))
|
||||
|
||||
out.write('\n')
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user