summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-11-06 09:19:02 +0000
committerZac Medico <zmedico@gentoo.org>2006-11-06 09:19:02 +0000
commit72f9356bc228777d3316a93c8976e709aa0874e2 (patch)
treecb98011ac457f29d45ee76578c47be52fcbb4345 /bin
parentf03be2d0b764880ab07a76505a7f7fdfc39507aa (diff)
downloadportage-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
Diffstat (limited to 'bin')
-rwxr-xr-xbin/emerge24
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: