commit
86659f8514
@ -103,8 +103,6 @@ class Graph(dict):
|
||||
"""Get the adjancent list for a vertex"""
|
||||
return sorted(self.adj[v]) if v in self else set()
|
||||
|
||||
|
||||
|
||||
def cycles(self):
|
||||
"""Detect cycles using Tarjan algorithm."""
|
||||
index = [0]
|
||||
@ -190,7 +188,7 @@ class Package(object):
|
||||
self.subs = set(e.text for e in element.findall('subpkg'))
|
||||
|
||||
def __repr__(self):
|
||||
return 'PKG: %s\nSRC: %s\nDEPS: %s\n SUBS:%s'%(self.pkg, self.src, self.deps, self.subs)
|
||||
return 'PKG: %s\nSRC: %s\nDEPS: %s\n SUBS: %s'%(self.pkg, self.src, self.deps, self.subs)
|
||||
|
||||
|
||||
def memoize(ttl=None):
|
||||
@ -869,14 +867,14 @@ def _check_repo_group(self, id_, reqs, opts):
|
||||
continue
|
||||
|
||||
# Update the currect graph and see if we have different cycles
|
||||
if p.spackage in current_graph:
|
||||
current_graph[p.spackage] = pkg
|
||||
current_graph.remove_edges_from(set((pkg.pkg, subpkgs[p_]) for p_ in pkg.deps if p_ in subpkgs))
|
||||
if pkg.pkg in current_graph:
|
||||
current_graph[pkg.pkg] = pkg
|
||||
current_graph.remove_edges_from(set((pkg.pkg, p_) for p_ in current_graph.edges(pkg.pkg)))
|
||||
else:
|
||||
current_graph.add_node(pkg.pkg, pkg)
|
||||
current_graph.add_edges_from((pkg.pkg, subpkgs[p_]) for p_ in pkg.deps if p_ in subpkgs)
|
||||
|
||||
subpkgs.update(dict((p_, pkg.pkg) for p_ in pkg.deps))
|
||||
subpkgs.update(dict((p_, pkg.pkg) for p_ in pkg.subs))
|
||||
|
||||
for cycle in current_graph.cycles():
|
||||
if cycle not in factory_cycles:
|
||||
@ -885,6 +883,8 @@ def _check_repo_group(self, id_, reqs, opts):
|
||||
factory_edges = set((u, v) for u in cycle for v in factory_graph.edges(u) if v in cycle)
|
||||
current_edges = set((u, v) for u in cycle for v in current_graph.edges(u) if v in cycle)
|
||||
print 'New edjes:', sorted(current_edges - factory_edges)
|
||||
print 'xml-commons-apis-bootstrap', current_graph.edges('xml-commons-apis-bootstrap')
|
||||
print 'xml-commons', current_graph.edges('xml-commons')
|
||||
# Exit if cycle found
|
||||
return
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user