Remove redundant version sorting in _expand_new_virtuals() since the
authorZac Medico <zmedico@gentoo.org>
Wed, 16 Apr 2008 22:29:20 +0000 (22:29 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 16 Apr 2008 22:29:20 +0000 (22:29 -0000)
dbapi match results are already sorted.

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

pym/portage/__init__.py

index 13ded0feaccc9db4faa9fd5be459d8eb71e4e266..f9a9e5d11707abde82b73a0d4fed309dee080a06 100644 (file)
@@ -5309,8 +5309,6 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/",
        # According to GLEP 37, RDEPEND is the only dependency type that is valid
        # for new-style virtuals.  Repoman should enforce this.
        dep_keys = ["RDEPEND", "DEPEND", "PDEPEND"]
-       def compare_pkgs(a, b):
-               return pkgcmp(b[1], a[1])
        portdb = trees[myroot]["porttree"].dbapi
        if kwargs["use_binaries"]:
                portdb = trees[myroot]["bintree"].dbapi
@@ -5336,19 +5334,14 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/",
                match_atom = x
                if isblocker:
                        match_atom = x[1:]
-               pkgs = {}
-               for cpv in portdb.match(match_atom):
+               pkgs = []
+               matches = portdb.match(match_atom)
+               # Use descending order to prefer higher versions.
+               matches.reverse()
+               for cpv in matches:
                        # only use new-style matches
                        if cpv.startswith("virtual/"):
-                               pkgs[cpv] = (cpv, catpkgsplit(cpv)[1:], portdb)
-               if kwargs["use_binaries"] and "vartree" in trees[myroot]:
-                       vardb = trees[myroot]["vartree"].dbapi
-                       for cpv in vardb.match(match_atom):
-                               # only use new-style matches
-                               if cpv.startswith("virtual/"):
-                                       if cpv in pkgs:
-                                               continue
-                                       pkgs[cpv] = (cpv, catpkgsplit(cpv)[1:], vardb)
+                               pkgs.append((cpv, catpkgsplit(cpv)[1:], portdb))
                if not (pkgs or mychoices):
                        # This one couldn't be expanded as a new-style virtual.  Old-style
                        # virtuals have already been expanded by dep_virtual, so this one
@@ -5360,8 +5353,6 @@ def _expand_new_virtuals(mysplit, edebug, mydbapi, mysettings, myroot="/",
                if not pkgs and len(mychoices) == 1:
                        newsplit.append(x.replace(mykey, mychoices[0]))
                        continue
-               pkgs = pkgs.values()
-               pkgs.sort(compare_pkgs) # Prefer higher versions.
                if isblocker:
                        a = []
                else: