summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-10-22 22:41:32 +0000
committerZac Medico <zmedico@gentoo.org>2007-10-22 22:41:32 +0000
commit8720ca28e13163d3b3fa36573dcd8b4e1da73387 (patch)
tree92eb03bc4d15374b5a73ac7417c6e79de0c94d6c /bin/emerge
parent66e267e4c983cfee6a0498c4bc7c13aa41b00fe1 (diff)
downloadportage-8720ca28e13163d3b3fa36573dcd8b4e1da73387.tar.gz
portage-8720ca28e13163d3b3fa36573dcd8b4e1da73387.tar.bz2
portage-8720ca28e13163d3b3fa36573dcd8b4e1da73387.zip
In depgraph.create(), if a direct circular dependency is
not an unsatisfied buildtime dependency then drop it here since otherwise it can skew the merge order calculation in an unwanted way. (trunk r8233) svn path=/main/branches/2.1.2/; revision=8234
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge15
1 files changed, 9 insertions, 6 deletions
diff --git a/bin/emerge b/bin/emerge
index def6f7b24..6fcbad7f7 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1350,13 +1350,16 @@ class depgraph:
if existing_node:
e_type, myroot, e_cpv, e_status = existing_node
if mykey == e_cpv:
- # 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.
+ # The existing node can be reused.
self._parent_child_digraph.add(existing_node, myparent)
- self.digraph.addnode(existing_node, myparent,
- priority=priority)
+ # If a direct circular dependency is not an unsatisfied
+ # buildtime dependency then drop it here since otherwise
+ # it can skew the merge order calculation in an unwanted
+ # way.
+ if existing_node != myparent or \
+ (priority.buildtime and not priority.satisfied):
+ self.digraph.addnode(existing_node, myparent,
+ priority=priority)
return 1
else:
if jbigkey in self._slot_collision_nodes: