In the package selection loop, move the installed package rejection
authorZac Medico <zmedico@gentoo.org>
Mon, 31 Mar 2008 23:12:14 +0000 (23:12 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 31 Mar 2008 23:12:14 +0000 (23:12 -0000)
code as early as possible.

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

pym/_emerge/__init__.py

index fa7950d4d3d9e63f9d831c2ad76e0b5e0e0b3979..54cdb2abd3b47a3082462908d53edef0f7e8231c 100644 (file)
@@ -2572,6 +2572,11 @@ class depgraph(object):
                        for db, pkg_type, built, installed, db_keys in dbs:
                                if existing_node:
                                        break
+                               if installed and not find_existing_node:
+                                       want_reinstall = 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:
@@ -2698,20 +2703,11 @@ class depgraph(object):
                                                pkgsettings.setcpv(cpv, mydb=metadata)
                                                metadata["USE"] = pkgsettings["PORTAGE_USE"]
                                                myeb = cpv
-                                       want_reinstall = False
-                                       if installed:
-                                               want_reinstall = empty or \
-                                                       (found_available_arg and not selective)
                                        pkg = Package(type_name=pkg_type, root=root,
                                                cpv=cpv, metadata=metadata,
                                                built=built, installed=installed,
                                                onlydeps=onlydeps)
-                                       if installed and want_reinstall and matched_packages:
-                                               # Reject the installed package unless
-                                               # there are no other matches.
-                                               break
-                                       else:
-                                               matched_packages.append(pkg)
+                                       matched_packages.append(pkg)
                                        if reinstall_for_flags:
                                                self._reinstall_nodes[pkg] = \
                                                        reinstall_for_flags