Make sure that portage always has all of it's RDEPENDs installed first.
authorZac Medico <zmedico@gentoo.org>
Sat, 4 Aug 2007 22:01:45 +0000 (22:01 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 4 Aug 2007 22:01:45 +0000 (22:01 -0000)
svn path=/main/trunk/; revision=7572

pym/emerge/__init__.py

index 6c77bec6f9591c842eb527ee57f8720cf0ca7395..0a5a603d930864604043473b7ef6aa30b6de15ff 100644 (file)
@@ -2194,12 +2194,14 @@ class depgraph(object):
                circular_blocks = False
                blocker_deps = None
                asap_nodes = []
+               portage_node = None
                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]:
+                                       portage_node = node
                                        asap_nodes.append(node)
                                        break
                ignore_priority_soft_range = [None]
@@ -2260,6 +2262,11 @@ class depgraph(object):
                                                        return True
                                                if node not in mergeable_nodes:
                                                        return False
+                                               if node is portage_node and mygraph.child_nodes(node,
+                                                       ignore_priority=DepPriority.MEDIUM_SOFT):
+                                                       # Make sure that portage always has all of it's
+                                                       # RDEPENDs installed first.
+                                                       return False
                                                selected_nodes.add(node)
                                                for child in mygraph.child_nodes(node,
                                                        ignore_priority=ignore_priority):