In depgraph.create(), don't ignore direct circular dependencies
authorZac Medico <zmedico@gentoo.org>
Mon, 22 Oct 2007 06:59:26 +0000 (06:59 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 22 Oct 2007 06:59:26 +0000 (06:59 -0000)
anymore since altlist() is able to handle it properly in cases
where the dependency is satisfied. If the dep is unsatisfied
then it can not be ignored.

svn path=/main/trunk/; revision=8225

pym/_emerge/__init__.py

index e08e3631033c12816b9406300d40f6e80ee0df98..f3fd95a4d2899e9de428bf051842be01d65b789c 100644 (file)
@@ -1294,14 +1294,13 @@ class depgraph(object):
                        if existing_node:
                                e_type, myroot, e_cpv, e_status = existing_node
                                if mykey == e_cpv:
-                                       # The existing node can be reused.
-                                       if existing_node != myparent:
-                                               # Refuse to make a node depend on itself so that
-                                               # we don't create a bogus circular dependency
-                                               # in self.altlist().
-                                               self._parent_child_digraph.add(existing_node, myparent)
-                                               self.digraph.addnode(existing_node, myparent,
-                                                       priority=priority)
+                                       # The existing node can be reused. It's okay for a
+                                       # node to depend on itself here if priority.satisfied
+                                       # is True, otherwise it is a circular dependency that
+                                       # can not be ignored.
+                                       self._parent_child_digraph.add(existing_node, myparent)
+                                       self.digraph.addnode(existing_node, myparent,
+                                               priority=priority)
                                        return 1
                                else:
                                        if jbigkey in self._slot_collision_nodes: