diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-11-06 09:19:02 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-11-06 09:19:02 +0000 |
commit | 72f9356bc228777d3316a93c8976e709aa0874e2 (patch) | |
tree | cb98011ac457f29d45ee76578c47be52fcbb4345 | |
parent | f03be2d0b764880ab07a76505a7f7fdfc39507aa (diff) | |
download | portage-72f9356bc228777d3316a93c8976e709aa0874e2.tar.gz portage-72f9356bc228777d3316a93c8976e709aa0874e2.tar.bz2 portage-72f9356bc228777d3316a93c8976e709aa0874e2.zip |
Ensure that sys-apps/portage is as close as possible to the beginning of the merge list. This is accomplished by merging it before any soft deps that it may have.
svn path=/main/trunk/; revision=4949
-rwxr-xr-x | bin/emerge | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/bin/emerge b/bin/emerge index 80c0514d3..729668fb2 100755 --- a/bin/emerge +++ b/bin/emerge @@ -1502,18 +1502,34 @@ class depgraph: retlist=[] circular_blocks = False blocker_deps = None + asap_nodes = [] if reversed: get_nodes = mygraph.root_nodes else: get_nodes = mygraph.leaf_nodes + for cpv, node in self.pkg_node_map.iteritems(): + if "portage" == portage.catsplit(portage.dep_getkey(cpv))[-1]: + asap_nodes.append(node) + break ignore_priority_range = [None] ignore_priority_range.extend( xrange(DepPriority.MIN, DepPriority.MEDIUM + 1)) while not mygraph.empty(): - for ignore_priority in ignore_priority_range: - nodes = get_nodes(ignore_priority=ignore_priority) - if nodes: - break + ignore_priority = None + nodes = None + if asap_nodes: + """ASAP nodes are merged before their soft deps.""" + for node in asap_nodes: + if not mygraph.child_nodes(node, + ignore_priority=DepPriority.SOFT): + nodes = [node] + asap_nodes.remove(node) + break + if not nodes: + for ignore_priority in ignore_priority_range: + nodes = get_nodes(ignore_priority=ignore_priority) + if nodes: + break selected_nodes = None if nodes: if ignore_priority <= DepPriority.SOFT: |