depgraph: fix installed/newuse logic more
authorZac Medico <zmedico@gentoo.org>
Wed, 19 Jun 2013 21:07:17 +0000 (14:07 -0700)
committerZac Medico <zmedico@gentoo.org>
Wed, 19 Jun 2013 21:07:17 +0000 (14:07 -0700)
The matched_pkgs_ignore_use logic, introduced in commit
dc8d70479dfb54a1f2561ba3fe82d7a62d97964f, is questionable because we
need to ensure that an installed package can be selected if there are
no other available packages that match a given USE-dep.

pym/_emerge/depgraph.py

index 3c52159896526e78018a89a41f6ca2ba1a362a0a..b2d79a808300f397c4acc68f875e21fe6afee2ab 100644 (file)
@@ -4642,7 +4642,6 @@ class depgraph(object):
                vardb = self._frozen_config.roots[root].trees["vartree"].dbapi
                # List of acceptable packages, ordered by type preference.
                matched_packages = []
-               matched_pkgs_ignore_use = []
                highest_version = None
                if not isinstance(atom, portage.dep.Atom):
                        atom = portage.dep.Atom(atom)
@@ -4824,7 +4823,6 @@ class depgraph(object):
 
                                        if atom.use:
 
-                                               matched_pkgs_ignore_use.append(pkg)
                                                if autounmask_level and autounmask_level.allow_use_changes and not pkg.built:
                                                        target_use = {}
                                                        for flag in atom.use.enabled:
@@ -4916,8 +4914,7 @@ class depgraph(object):
                                        # Compare built package to current config and
                                        # reject the built package if necessary.
                                        if built and not useoldpkg and \
-                                               (not installed or
-                                               any(other_pkg != pkg for other_pkg in matched_pkgs_ignore_use)) and \
+                                               (not installed or matched_packages) and \
                                                not (installed and
                                                self._frozen_config.excluded_pkgs.findAtomForPackage(pkg,
                                                modified_use=self._pkg_use_enabled(pkg))) and \