[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