[yum-commits] Branch 'yum-3_2_X' - 4 commits - yum/misc.py yum/rpmsack.py yum/transactioninfo.py

James Antill james at osuosl.org
Wed Nov 4 21:19:00 UTC 2009


 yum/misc.py            |    2 +-
 yum/rpmsack.py         |   29 +++++++++++++++++++++++------
 yum/transactioninfo.py |    8 ++++++--
 3 files changed, 30 insertions(+), 9 deletions(-)

New commits:
commit 9d83cabc986283a64d32f4b6983771f3b12ec880
Author: James Antill <james at and.org>
Date:   Tue Nov 3 19:01:58 2009 -0500

    Fix for callers that rely on .pkgSackPackages protecting .pkgSack.get*

diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index bade3e4..1cfc9cb 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -498,7 +498,9 @@ class TransactionData:
         """return dict { packages -> list of matching provides }
         searches in packages to be installed"""
         result = { }
-        if self._inSack is None:
+        if not self.pkgSackPackages:
+            pass
+        elif self._inSack is None:
             for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
                 if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES):
                     result[pkg] = hits
@@ -527,7 +529,9 @@ class TransactionData:
         """return dict { packages -> list of matching provides }
         searches in packages to be installed"""
         result = { }
-        if self._inSack is None:
+        if not self.pkgSackPackages:
+            pass
+        elif self._inSack is None:
             for pkg, hits in self.pkgSack.getRequires(name, flag, version).iteritems():
                 if self.getMembersWithState(pkg.pkgtup, TS_INSTALL_STATES):
                     result[pkg] = hits
commit 27fc604085e9fa559cef6c1e666bef395da8b27b
Author: James Antill <james at and.org>
Date:   Tue Nov 3 18:58:25 2009 -0500

    Fix get_running_kernel_version_release

diff --git a/yum/misc.py b/yum/misc.py
index fbac3b5..ee1da35 100644
--- a/yum/misc.py
+++ b/yum/misc.py
@@ -669,7 +669,7 @@ def get_running_kernel_version_release(ts):
     tuple for the running kernel."""
     pkgtup = get_running_kernel_pkgtup(ts)
     if pkgtup[0] is not None:
-        (pkgtup[3], pkgtup[4])
+        return (pkgtup[3], pkgtup[4])
     return (None, None)
 
 def find_unfinished_transactions(yumlibpath='/var/lib/yum'):
commit 49210852230fc05b4039283fb0de220f30f1130b
Author: James Antill <james at and.org>
Date:   Tue Nov 3 11:59:31 2009 -0500

    Fix epoch matching in rpmdb.returnPackages()

diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 05ba5f5..acc6ecb 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -338,7 +338,7 @@ class RPMDBPackageSack(PackageSackBase):
                 return True
             if repat.match("%(name)s-%(version)s-%(release)s" % hdr):
                 return True
-            if repat.match("%(epoch)s:%(name)s-%(version)s-%(release)s.%(arch)s"
+            if repat.match(epoch + ":%(name)s-%(version)s-%(release)s.%(arch)s"
                            % hdr):
                 return True
             if repat.match("%(name)s-%(epoch)s:%(version)s-%(release)s.%(arch)s"
commit c27f9dbfcbb551e8dc67ce729220971f8b28cbd2
Author: James Antill <james at and.org>
Date:   Tue Nov 3 11:58:41 2009 -0500

    Test the first char of a pattern match, if we can

diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 9a542e5..05ba5f5 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -300,17 +300,34 @@ class RPMDBPackageSack(PackageSackBase):
             return None
         ret = []
         for pat in patterns:
+            if not pat:
+                continue
+            qpat = pat[0]
+            if qpat in ('?', '*'):
+                qpat = None
             if ignore_case:
-                ret.append(re.compile(fnmatch.translate(pat), re.I))
+                if qpat is not None:
+                    qpat = qpat.lower()
+                ret.append((qpat, re.compile(fnmatch.translate(pat), re.I)))
             else:
-                ret.append(re.compile(fnmatch.translate(pat)))
+                ret.append((qpat, re.compile(fnmatch.translate(pat))))
         return ret
     @staticmethod
-    def _match_repattern(repatterns, hdr):
+    def _match_repattern(repatterns, hdr, ignore_case):
         if repatterns is None:
             return True
 
-        for repat in repatterns:
+        for qpat, repat in repatterns:
+            epoch = hdr['epoch']
+            if epoch is None:
+                epoch = '0'
+            else:
+                epoch = str(epoch)
+            qname = hdr['name'][0]
+            if ignore_case:
+                qname = qname.lower()
+            if qpat is not None and qpat != qname and qpat != epoch[0]:
+                continue
             if repat.match(hdr['name']):
                 return True
             if repat.match("%(name)s-%(version)s-%(release)s.%(arch)s" % hdr):
@@ -336,7 +353,7 @@ class RPMDBPackageSack(PackageSackBase):
         if not self._completely_loaded:
             rpats = self._compile_patterns(patterns, ignore_case)
             for hdr, idx in self._all_packages():
-                if self._match_repattern(rpats, hdr):
+                if self._match_repattern(rpats, hdr, ignore_case):
                     self._makePackageObject(hdr, idx)
             self._completely_loaded = patterns is None
 


More information about the Yum-commits mailing list