diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-10-22 22:41:32 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-10-22 22:41:32 +0000 |
commit | 8720ca28e13163d3b3fa36573dcd8b4e1da73387 (patch) | |
tree | 92eb03bc4d15374b5a73ac7417c6e79de0c94d6c | |
parent | 66e267e4c983cfee6a0498c4bc7c13aa41b00fe1 (diff) | |
download | portage-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
-rwxr-xr-x | bin/emerge | 15 |
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: |