Revert previous 2 commits since they broke "selective" behavior.
authorZac Medico <zmedico@gentoo.org>
Mon, 20 Oct 2008 00:44:52 +0000 (00:44 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 20 Oct 2008 00:44:52 +0000 (00:44 -0000)
svn path=/main/trunk/; revision=11704

pym/_emerge/__init__.py

index 9d260ebd6112e298e87471439529658fe2ad2936..03ee50ecac86f356ae4946ed83daeed247dc07d7 100644 (file)
@@ -5417,17 +5417,20 @@ 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.
+               # available packages match argument atoms, which is
+               # represented by the found_available_arg flag.
+               found_available_arg = False
                for find_existing_node in True, False:
                        if existing_node:
                                break
                        for db, pkg_type, built, installed, db_keys in dbs:
                                if existing_node:
                                        break
-                               if not find_existing_node and \
-                                       installed and matched_packages and \
-                                       (reinstall or empty or not selective):
-                                       continue
+                               if installed and not find_existing_node:
+                                       want_reinstall = reinstall or empty or \
+                                               (found_available_arg and not selective)
+                                       if want_reinstall and matched_packages:
+                                               continue
                                if hasattr(db, "xmatch"):
                                        cpv_list = db.xmatch("match-all", atom)
                                else:
@@ -5565,6 +5568,8 @@ 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