diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index 4dd4474bd4d393eaf8ff7bf2e3241bdc1474af77..4ecd4d6e549d31f785123c4de703ba5e8c33099e 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -48,6 +48,9 @@ def setup_parser(subparser): help='Show install status of packages. Packages can be: ' 'installed [+], missing and needed by an installed package [-], ' 'or not installed (no annotation).') + subparser.add_argument( + '-t', '--types', action='store_true', default=False, + help='Show dependency types.') subparser.add_argument( 'specs', nargs=argparse.REMAINDER, help="specs of packages") @@ -59,6 +62,7 @@ def spec(parser, args): 'format': name_fmt + '$@$%@+$+$=', 'hashes': args.long or args.very_long, 'hashlen': None if args.very_long else 7, + 'show_types': args.types, 'install_status': args.install_status} for spec in spack.cmd.parse_specs(args.specs): diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 23212ba72b2ef369567cd856d855b3cf9011a791..8230142d4396c3653fde56b058efecb4d1f92007 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2595,17 +2595,22 @@ def tree(self, **kwargs): indent = kwargs.pop('indent', 0) fmt = kwargs.pop('format', '$_$@$%@+$+$=') prefix = kwargs.pop('prefix', None) + show_types = kwargs.pop('show_types', False) deptypes = kwargs.pop('deptypes', ('build', 'link')) check_kwargs(kwargs, self.tree) out = "" - for d, node in self.traverse( + for d, dep_spec in self.traverse_with_deptype( order='pre', cover=cover, depth=True, deptypes=deptypes): + node = dep_spec.spec + if prefix is not None: out += prefix(node) out += " " * indent + if depth: out += "%-4d" % d + if install_status: status = node._install_status() if status is None: @@ -2617,6 +2622,16 @@ def tree(self, **kwargs): if hashes: out += colorize('@K{%s} ', color=color) % node.dag_hash(hlen) + + if show_types: + out += '[' + if dep_spec.deptypes: + for t in alldeps: + out += ''.join(t[0] if t in dep_spec.deptypes else ' ') + else: + out += ' ' * len(alldeps) + out += '] ' + out += (" " * d) if d > 0: out += "^"