Remove the "found_available_arg" variable from depgraph._select_pkg() and use
authorZac Medico <zmedico@gentoo.org>
Sun, 19 Oct 2008 17:33:14 +0000 (17:33 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 19 Oct 2008 17:33:14 +0000 (17:33 -0000)
the "matched_packages" variable instead. This solve a problem where the
"found_available_arg" flag is unreliable due to the slot filtering behavior
of depgraph._iter_atoms_for_pkg(). For example, a higher version in a
different slot than the available ebuild might be masked or unavailable, and
depgraph._iter_atoms_for_pkg() will not identify the available ebuild as
a match due to this installed package (which is not available for reinstall).

svn path=/main/trunk/; revision=11702

pym/_emerge/__init__.py

index 03ee50ecac86f356ae4946ed83daeed247dc07d7..ca4550afb21ad9b986db49b83e0b4b110bb3c219 100644 (file)
@@ -5417,9 +5417,7 @@ class depgraph(object):
                # Therefore, "selective" logic does not consider
                # whether or not an installed package matches an
                # argument atom. It only considers whether or not
-               # available packages match argument atoms, which is
-               # represented by the found_available_arg flag.
-               found_available_arg = False
+               # available packages match argument atoms.
                for find_existing_node in True, False:
                        if existing_node:
                                break
@@ -5428,7 +5426,7 @@ class depgraph(object):
                                        break
                                if installed and not find_existing_node:
                                        want_reinstall = reinstall or empty or \
-                                               (found_available_arg and not selective)
+                                               (matched_packages and not selective)
                                        if want_reinstall and matched_packages:
                                                continue
                                if hasattr(db, "xmatch"):
@@ -5568,8 +5566,6 @@ class depgraph(object):
                                                        if not installed:
                                                                # masked by corruption
                                                                continue
-                                       if not installed and myarg:
-                                               found_available_arg = True
 
                                        if atom.use and not pkg.built:
                                                use = pkg.use.enabled