Remove duplicate nodes

main
Michael Hayes 15 years ago
parent 508ff8fb53
commit 5fdbdf984b

@ -1,5 +1,5 @@
#!/usr/bin/python
"""graphdeps V0.06
"""graphdeps V0.07
Copyright (c) 2011 Michael P. Hayes, UC ECE, NZ
Usage: graphdeps Makefile
@ -41,6 +41,12 @@ def parse_rules (filename):
def node_output (dotfile, name, options):
if options.debug:
print >> sys.stderr, 'Node', name
if not options.fullpaths:
name = os.path.basename (name)
# Should check if creating a duplicate although graphviz will
# weed them out.
@ -85,11 +91,8 @@ def edge_output (dotfile, target, dep, indirect):
def dep_output (dotfile, target, dep, modules, options):
if not options.fullpaths:
target = os.path.basename (target)
dep = os.path.basename (dep)
target = node_output (dotfile, target, options)
if options.debug:
print >> sys.stderr, target, '::', dep
if dep == '':
return
@ -98,7 +101,7 @@ def dep_output (dotfile, target, dep, modules, options):
if indirect:
dep = dep[1:]
dep = node_output (dotfile, dep, options)
# dep = node_output (dotfile, dep, options)
(file, ext) = os.path.splitext (target)
@ -126,15 +129,22 @@ def target_output (dotfile, target, targets, modules, options, seen = {}):
if not target or seen.has_key (target):
return
deps = targets[target]
if options.debug:
print >> sys.stderr, target, ':', deps
for dep in deps:
if targets.has_key (dep) and target != dep:
target_output (dotfile, dep, targets, modules, options, seen)
target1 = node_output (dotfile, target, options)
for dep in deps:
dep_output (dotfile, target, dep, modules, options)
if dep != '':
dep_output (dotfile, target1, dep, modules, options)
seen[target] = True
@ -159,6 +169,10 @@ def main(argv = None):
dest = 'calls', default = False,
help = 'show callgraph')
parser.add_option('--debug', action = 'store_true',
dest = 'debug', default = False,
help = 'enable debugging')
parser.add_option('--fullpaths', action = 'store_true',
dest = 'fullpaths', default = False,
help = 'show full paths')

Loading…
Cancel
Save