[yum-commits] Branch 'yum-3_2_X' - 3 commits - yum/depsolve.py yum/packages.py

James Antill james at osuosl.org
Sun Oct 18 15:26:44 UTC 2009


 yum/depsolve.py |   25 ++++++++++++++++---------
 yum/packages.py |   20 +++++++++++++++++++-
 2 files changed, 35 insertions(+), 10 deletions(-)

New commits:
commit aed14cb9ab901a7b2aa7d871fb8d91f0c6940dae
Author: James Antill <james at and.org>
Date:   Sun Oct 18 00:00:25 2009 -0400

    Minor speedup/cleanup for isPkgInstalled().

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 5e855d5..d9b5e6f 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -985,19 +985,20 @@ class Depsolve(object):
 
 
     def isPackageInstalled(self, pkgname):
-        installed = False
-        if self.rpmdb.contains(name=pkgname):
-            installed = True
-
         lst = self.tsInfo.matchNaevr(name = pkgname)
         for txmbr in lst:
             if txmbr.output_state in TS_INSTALL_STATES:
                 return True
-        if installed and len(lst) > 0:
-            # if we get here, then it was installed, but it's in the tsInfo
-            # for an erase or obsoleted --> not going to be installed at end
+
+        if len(lst) > 0:
+            # if we get here then it's in the tsInfo for an erase or obsoleted
+            #  --> not going to be installed
             return False
-        return installed
+
+        if not self.rpmdb.contains(name=pkgname):
+            return False
+
+        return True
     _isPackageInstalled = isPackageInstalled
 
     def _compare_providers(self, pkgs, reqpo):
commit fdc6f9e39eaa99d3535032b30b7fc5357d5751fc
Author: James Antill <james at and.org>
Date:   Sat Oct 17 23:52:28 2009 -0400

     Is base package name installed, added as a compare_providers test
       Should fix the problem that ticket/296 has
    
     Also add debug output for reqpo common repoid comparison.
      Also bump the nudge from 2 to 8, so it should nudge past shortest
      name.

diff --git a/yum/depsolve.py b/yum/depsolve.py
index b10a72c..5e855d5 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -1160,6 +1160,10 @@ class Depsolve(object):
                 self.verbose_logger.log(logginglevels.DEBUG_4,
                     _('common sourcerpm %s and %s' % (po, reqpo)))
                 pkgresults[po] += 20
+            if self.isPackageInstalled(po.base_package_name):
+                self.verbose_logger.log(logginglevels.DEBUG_4,
+                    _('base package %s is installed for %s' % (po.base_package_name, po)))
+                pkgresults[po] += 5 # Same as ipkgresults above.
             if reqpo:
                 cpl = _common_prefix_len(po.name, reqpo.name)
                 if cpl > 2:
@@ -1171,7 +1175,9 @@ class Depsolve(object):
                 # if a provider is from the same repo as the reqpo
                 # give it a slight nudge
                 if reqpo.repoid == po.repoid:
-                    pkgresults[po] += 2
+                    self.verbose_logger.log(logginglevels.DEBUG_4,
+                        _('common repoid of %s between %s and %s' % (po.repoid, po, reqpo)))
+                    pkgresults[po] += 8
             pkgresults[po] += (len(po.name)*-1)
 
         bestorder = sorted(pkgresults.items(), cmp=_cmp_best_providers)
commit 1ba0b3947f71c57a1106fd448d7ec1445f1a54be
Author: James Antill <james at and.org>
Date:   Sat Oct 17 23:40:22 2009 -0400

     Add .base_package_name, which parses .sourcerpm or uses .name
    
     This is added to RpmBase, so we can do it for installed pkgs too, we
    could move it even higher as it only actually needs .name to work.
    
     Also get rid of an extra .isSrpm() call.

diff --git a/yum/packages.py b/yum/packages.py
index bb0e7ca..71430fd 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -488,6 +488,25 @@ class RpmBase(object):
     changelog = property(fget=lambda self: self.returnChangelog())
     EVR = property(fget=lambda self: self.returnEVR())
     
+    def _getBaseName(self):
+        """ Return the "base name" of the package, atm. we can only look at
+            the sourcerpm. """
+        if hasattr(self, '_base_package_name_ret'):
+            return self._base_package_name_ret
+
+        if hasattr(self, 'sourcerpm') and self.sourcerpm:
+            (n, v, r, e, a) = rpmUtils.miscutils.splitFilename(self.sourcerpm)
+            if n != self.name:
+                self._base_package_name_ret = n
+                return n
+
+        # If there is no sourcerpm, or sourcerpm == us, use .name
+        self._base_package_name_ret = self.name
+        return self._base_package_name_ret
+
+    base_package_name = property(fget=lambda self: self._getBaseName())
+
+
 class PackageEVR:
 
     """
@@ -1570,7 +1589,6 @@ class YumLocalPackage(YumHeaderPackage):
         self.pkgtup = (self.name, self.arch, self.epoch, self.ver, self.rel)
         self._hdrstart = None
         self._hdrend = None
-        self.arch = self.isSrpm()
         self.checksum_type = misc._default_checksums[0]
 
         # these can be set by callers that need these features (ex: createrepo)


More information about the Yum-commits mailing list