diff --git a/osc-check_repo.py b/osc-check_repo.py index 311a8883..2d594d98 100644 --- a/osc-check_repo.py +++ b/osc-check_repo.py @@ -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