Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > e53c27ce7a27944d2cee0a028d0ccfc9 > files > 32

yum-3.2.22-37.sl.src.rpm

commit 568eaf5b88f376a1822396fd9dc7324d1aed23ea
Author: Seth Vidal <skvidal@fedoraproject.org>
Date:   Mon Apr 6 11:15:56 2009 -0400

    do the obsoletes check in compare_providers() properly.

diff --git a/yum/depsolve.py b/yum/depsolve.py
index fdf48a3..48e3c65 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -1084,17 +1084,14 @@ class Depsolve(object):
                 if po == nextpo:
                     continue
                 obsoleted = False
-                for obs in nextpo.obsoletes:
-                    if po.inPrcoRange('provides', obs):
-                        obsoleted = True
+                poprovtup = (po.name, 'EQ', (po.epoch, po.ver, po.release))
+                if nextpo.inPrcoRange('obsoletes', poprovtup):
+                    obsoleted = True
+                    pkgresults[po] -= 1024
                                 
-                        self.verbose_logger.log(logginglevels.DEBUG_4,
-                            _("%s obsoletes %s") % (po, nextpo))
+                    self.verbose_logger.log(logginglevels.DEBUG_4,
+                        _("%s obsoletes %s") % (nextpo, po))
 
-                    if obsoleted:
-                        pkgresults[po] -= 1024
-                        break
-                
                 if reqpo:
                     arches = (reqpo.arch, getBestArch())
                 else:
commit 257d17f95743a679b62807dd4eb6d29c6b628f5c
Author: Seth Vidal <skvidal@fedoraproject.org>
Date:   Mon Apr 6 11:19:37 2009 -0400

    really apply the returnPackageByDep() patch

diff --git a/yum/__init__.py b/yum/__init__.py
index d112d24..8ce96ef 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -55,7 +55,7 @@ import transactioninfo
 import urlgrabber
 from urlgrabber.grabber import URLGrabber, URLGrabError
 from urlgrabber.progress import format_number
-from packageSack import packagesNewestByNameArch
+from packageSack import packagesNewestByNameArch, ListPackageSack
 import depsolve
 import plugins
 import logginglevels
@@ -2284,7 +2284,8 @@ class YumBase(depsolve.Depsolve):
         except Errors.YumBaseError:
             raise Errors.YumBaseError, _('No Package found for %s') % depstring
         
-        result = self._bestPackageFromList(pkglist)
+        ps = ListPackageSack(pkglist)
+        result = self._bestPackageFromList(ps.returnNewestByNameArch())
         if result is None:
             raise Errors.YumBaseError, _('No Package found for %s') % depstring
         
commit e377aed21c9da6c52ece5ad937d695f432a255f4
Author: James Antill <james@and.org>
Date:   Mon Apr 6 11:23:57 2009 -0400

    Sort pkgs normally, which have the same score.

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 48e3c65..819adac 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -996,6 +996,12 @@ class Depsolve(object):
         self.verbose_logger.log(logginglevels.DEBUG_4,
               _("Running compare_providers() for %s") %(str(pkgs)))
 
+        def _cmp_best_providers(x, y):
+            """ Compare first by score, and then compare the pkgs if the score
+                is the same. Note that this sorts in reverse. """
+            ret = cmp(y[1], x[1])
+            if ret: return ret
+            return cmp(y[0], x[0])
         
         def _common_prefix_len(x, y, minlen=2):
             num = min(len(x), len(y))
@@ -1121,7 +1127,7 @@ class Depsolve(object):
             
             pkgresults[po] += (len(po.name)*-1)
 
-        bestorder = sorted(pkgresults.items(), key=itemgetter(1), reverse=True)
+        bestorder = sorted(pkgresults.items(), cmp=_cmp_best_providers)
         self.verbose_logger.log(logginglevels.DEBUG_4,
                 _('Best Order: %s' % str(bestorder)))