[yum-commits] Branch 'yum-3_2_X' - 3 commits - yum/rpmsack.py yum/sqlitesack.py
James Antill
james at osuosl.org
Mon Apr 12 18:22:02 UTC 2010
yum/rpmsack.py | 23 ++++++++++++++++++-----
yum/sqlitesack.py | 6 ++++--
2 files changed, 22 insertions(+), 7 deletions(-)
New commits:
commit e45f29737d830587373e2b494fdcee95ad708e65
Author: James Antill <james at and.org>
Date: Mon Apr 12 11:56:00 2010 -0400
Don't integrate negative pkgnames with provides, probably fine but...
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 2b932cf..e113802 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -146,6 +146,7 @@ class RPMDBPackageSack(PackageSackBase):
self._tup2pkg = {}
self._completely_loaded = False
self._pkgmatch_fails = set()
+ self._provmatch_fails = set()
self._simple_pkgtup_list = []
self._get_pro_cache = {}
self._get_req_cache = {}
@@ -193,6 +194,7 @@ class RPMDBPackageSack(PackageSackBase):
self._tup2pkg = {}
self._completely_loaded = False
self._pkgmatch_fails = set()
+ self._provmatch_fails = set()
self._simple_pkgtup_list = []
self._get_pro_cache = {}
self._get_req_cache = {}
@@ -323,11 +325,11 @@ class RPMDBPackageSack(PackageSackBase):
return result
def searchProvides(self, name):
- if name in self._pkgmatch_fails:
+ if name in self._provmatch_fails:
return []
ret = self.searchPrco(name, 'provides')
if not ret:
- self._pkgmatch_fails.add(name)
+ self._provmatch_fails.add(name)
return ret
def searchRequires(self, name):
diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 8a4ec8b..344a966 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -429,6 +429,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
self._pkgtup2pkgs = {}
self._pkgnames_loaded = set()
self._pkgmatch_fails = set()
+ self._provmatch_fails = set()
self._arch_allowed = None
self._pkgExcluder = []
self._pkgExcludeIds = {}
@@ -493,6 +494,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
self._pkgname2pkgkeys = {}
self._pkgnames_loaded = set()
self._pkgmatch_fails = set()
+ self._provmatch_fails = set()
self._pkgtup2pkgs = {}
self._search_cache = {
'provides' : { },
@@ -1374,11 +1376,11 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
def searchProvides(self, name):
"""return list of packages providing name (any evr and flag)"""
- if name in self._pkgmatch_fails:
+ if name in self._provmatch_fails:
return []
ret = self.searchPrco(name, "provides")
if not ret:
- self._pkgmatch_fails.add(name)
+ self._provmatch_fails.add(name)
return ret
def searchRequires(self, name):
commit 62759284de079371407f4ba429f48a0be5a5589b
Author: James Antill <james at and.org>
Date: Mon Apr 12 11:53:17 2010 -0400
Do the pkgmatch_fails negative caching, in _search
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 179b008..2b932cf 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -986,6 +986,9 @@ class RPMDBPackageSack(PackageSackBase):
def _search(self, name=None, epoch=None, ver=None, rel=None, arch=None):
'''List of matching packages, to zero or more of NEVRA.'''
+ if name is not None and name in self._pkgmatch_fails:
+ return []
+
pkgtup = (name, arch, epoch, ver, rel)
if pkgtup in self._tup2pkg:
return [self._tup2pkg[pkgtup]]
@@ -996,6 +999,8 @@ class RPMDBPackageSack(PackageSackBase):
if self._completely_loaded or name in self._pkgnames_loaded:
if name is not None:
pkgs = self._name2pkg.get(name, [])
+ if not pkgs:
+ self._pkgmatch_fails.add(name)
else:
pkgs = self.returnPkgs()
for po in pkgs:
@@ -1015,6 +1020,7 @@ class RPMDBPackageSack(PackageSackBase):
mi = ts.dbMatch()
self._completely_loaded = True
+ done = False
for hdr in mi:
if hdr['name'] == 'gpg-pubkey':
continue
@@ -1022,6 +1028,7 @@ class RPMDBPackageSack(PackageSackBase):
# We create POs out of all matching names, even if we don't return
# them.
self._pkgnames_loaded.add(po.name)
+ done = True
for tag in ('arch', 'rel', 'ver', 'epoch'):
if loc[tag] is not None and loc[tag] != getattr(po, tag):
@@ -1032,6 +1039,9 @@ class RPMDBPackageSack(PackageSackBase):
if self.auto_close:
self.ts.close()
+ if not done and name is not None:
+ self._pkgmatch_fails.add(name)
+
return ret
def _makePackageObject(self, hdr, index):
commit d3c698e03df6f664c67b61301320ebdc2dc11422
Author: James Antill <james at and.org>
Date: Mon Apr 12 11:50:55 2010 -0400
Do the pkgnames_loaded in the correct place, for _search
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 4c17b67..179b008 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -1009,9 +1009,6 @@ class RPMDBPackageSack(PackageSackBase):
ts = self.readOnlyTS()
if name is not None:
mi = ts.dbMatch('name', name)
- # We create POs out of all matching names, even if we don't return
- # them.
- self._pkgnames_loaded.add(name)
elif arch is not None:
mi = ts.dbMatch('arch', arch)
else:
@@ -1022,6 +1019,10 @@ class RPMDBPackageSack(PackageSackBase):
if hdr['name'] == 'gpg-pubkey':
continue
po = self._makePackageObject(hdr, mi.instance())
+ # We create POs out of all matching names, even if we don't return
+ # them.
+ self._pkgnames_loaded.add(po.name)
+
for tag in ('arch', 'rel', 'ver', 'epoch'):
if loc[tag] is not None and loc[tag] != getattr(po, tag):
break
More information about the Yum-commits
mailing list