DepPriority: remove "rebuild" attribute
authorZac Medico <zmedico@gentoo.org>
Sun, 22 May 2011 00:46:11 +0000 (17:46 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 May 2011 03:51:11 +0000 (20:51 -0700)
Since the addition of DepPriorityNormalRange and
DepPrioritySatisfiedRange in commit
bd369956b2a2fbc019a655a372628998499156c0, which solves most cases of
bug 199856, the Depriority.rebuild attribute doesn't appear to make any
difference. The edges that this attribute differentiates are already
naturally differentiated by the fact that the child node of a satisfied
buildtime dependency that's not being rebuilt will naturally be
identified as a leaf node earlier and removed from the graph, thereby
eliminating the edge before there's an opportunity to compare it with
a higher priority rebuild edge. The addition of the "optional"
attribute (in commit 15476805a156acd11fdaaa19212691e8ee09b309) also
plays a role here, since it converts some satisfied buildtime edges to
optional edges, thereby reducing their priority.

pym/_emerge/DepPriority.py
pym/_emerge/DepPrioritySatisfiedRange.py
pym/_emerge/depgraph.py

index f99b7264f5079ade9bcdfd5b8ef0c8b70caa72a2..91afc055443b4e459f6da0a71fb0b759e883d447 100644 (file)
@@ -4,7 +4,7 @@
 from _emerge.AbstractDepPriority import AbstractDepPriority
 class DepPriority(AbstractDepPriority):
 
-       __slots__ = ("satisfied", "optional", "rebuild")
+       __slots__ = ("satisfied", "optional")
 
        def __int__(self):
                """
index aa32d8f86635245601447afddd16e56d3b987d40..7c2ea812b62c40dcf015edbfa7a4c6f35655931b 100644 (file)
@@ -7,18 +7,17 @@ class DepPrioritySatisfiedRange(object):
        DepPriority                         Index      Category
 
        not satisfied and buildtime                    HARD
-       not satisfied and runtime              7       MEDIUM
-       not satisfied and runtime_post         6       MEDIUM_SOFT
-       satisfied and buildtime and rebuild    5       SOFT
+       not satisfied and runtime              6       MEDIUM
+       not satisfied and runtime_post         5       MEDIUM_SOFT
        satisfied and buildtime                4       SOFT
        satisfied and runtime                  3       SOFT
        satisfied and runtime_post             2       SOFT
        optional                               1       SOFT
        (none of the above)                    0       NONE
        """
-       MEDIUM      = 7
-       MEDIUM_SOFT = 6
-       SOFT        = 5
+       MEDIUM      = 6
+       MEDIUM_SOFT = 5
+       SOFT        = 4
        NONE        = 0
 
        @classmethod
@@ -51,21 +50,8 @@ class DepPrioritySatisfiedRange(object):
        def _ignore_satisfied_buildtime(cls, priority):
                if priority.__class__ is not DepPriority:
                        return False
-               if priority.optional:
-                       return True
-               if not priority.satisfied:
-                       return False
-               if priority.buildtime:
-                       return not priority.rebuild
-               return True
-
-       @classmethod
-       def _ignore_satisfied_buildtime_rebuild(cls, priority):
-               if priority.__class__ is not DepPriority:
-                       return False
-               if priority.optional:
-                       return True
-               return bool(priority.satisfied)
+               return bool(priority.optional or \
+                       priority.satisfied)
 
        @classmethod
        def _ignore_runtime_post(cls, priority):
@@ -84,7 +70,7 @@ class DepPrioritySatisfiedRange(object):
 
        ignore_medium      = _ignore_runtime
        ignore_medium_soft = _ignore_runtime_post
-       ignore_soft        = _ignore_satisfied_buildtime_rebuild
+       ignore_soft        = _ignore_satisfied_buildtime
 
 
 DepPrioritySatisfiedRange.ignore_priority = (
@@ -93,7 +79,6 @@ DepPrioritySatisfiedRange.ignore_priority = (
        DepPrioritySatisfiedRange._ignore_satisfied_runtime_post,
        DepPrioritySatisfiedRange._ignore_satisfied_runtime,
        DepPrioritySatisfiedRange._ignore_satisfied_buildtime,
-       DepPrioritySatisfiedRange._ignore_satisfied_buildtime_rebuild,
        DepPrioritySatisfiedRange._ignore_runtime_post,
        DepPrioritySatisfiedRange._ignore_runtime
 )
index 808103ce80720270e9ce0cda6bfd53e5e3347a80..d0409a4162eb26eeac99934992a1d189e0f2974b 100644 (file)
@@ -831,18 +831,6 @@ class depgraph(object):
                                return 0
 
                if not pkg.onlydeps:
-                       if not pkg.installed and \
-                               "empty" not in self._dynamic_config.myparams and \
-                               vardbapi.match(pkg.slot_atom):
-                               # Increase the priority of dependencies on packages that
-                               # are being rebuilt. This optimizes merge order so that
-                               # dependencies are rebuilt/updated as soon as possible,
-                               # which is needed especially when emerge is called by
-                               # revdep-rebuild since dependencies may be affected by ABI
-                               # breakage that has rendered them useless. Don't adjust
-                               # priority here when in "empty" mode since all packages
-                               # are being merged in that case.
-                               priority.rebuild = True
 
                        existing_node, existing_node_matches = \
                                self._check_slot_conflict(pkg, dep.atom)