[yum-git] Branch 'yum-3_2_X' - 2 commits - yum/packageSack.py yum/rpmsack.py yum/sqlitesack.py
Seth Vidal
skvidal at linux.duke.edu
Thu Jul 3 15:42:00 UTC 2008
yum/packageSack.py | 6 ++++++
yum/rpmsack.py | 5 +++++
yum/sqlitesack.py | 32 +++++++++++++++++++++++++++++++-
3 files changed, 42 insertions(+), 1 deletion(-)
New commits:
commit ff779dff27cc680d5b1a155c41125a87ad7e4c10
Merge: 8d6dd2a... 1c62ccb...
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Thu Jul 3 11:40:05 2008 -0400
Merge branch 'yum-3_2_X' of ssh://login.linux.duke.edu/home/groups/yum/git/yum into yum-3_2_X
* 'yum-3_2_X' of ssh://login.linux.duke.edu/home/groups/yum/git/yum:
Fix doPackageLists() and rpmdb.returnPackages() to have ignore_case option.
Tidy up extra --version output, add rpm/etc. packages we dep. on
commit 8d6dd2add2a27479b4b4d2f93630283d4c28f296
Author: Seth Vidal <skvidal at fedoraproject.org>
Date: Thu Jul 3 11:39:46 2008 -0400
implement searchNames() to let you quickly do exact name matches of multiple names.
diff --git a/yum/packageSack.py b/yum/packageSack.py
index 8bc36f8..7368655 100644
--- a/yum/packageSack.py
+++ b/yum/packageSack.py
@@ -58,6 +58,9 @@ class PackageSackBase(object):
"""return list of pkgobjects matching the nevra requested"""
raise NotImplementedError()
+ def searchNames(self, names=[]):
+ raise NotImplementedError()
+
def searchPO(self, po):
"""return list of package objects matching the name, epoch, ver, rel,
arch of the package object passed in"""
@@ -291,6 +294,9 @@ class MetaSack(PackageSackBase):
"""return list of pkgobjects matching the nevra requested"""
return self._computeAggregateListResult("searchNevra", name, epoch, ver, rel, arch)
+ def searchNames(self, names=[]):
+ return self._computeAggregateListResult("searchNames", names)
+
def getProvides(self, name, flags=None, version=(None, None, None)):
"""return dict { packages -> list of matching provides }"""
return self._computeAggregateDictResult("getProvides", name, flags, version)
diff --git a/yum/rpmsack.py b/yum/rpmsack.py
index 7b08ab0..24cd96c 100644
--- a/yum/rpmsack.py
+++ b/yum/rpmsack.py
@@ -315,6 +315,11 @@ class RPMDBPackageSack(PackageSackBase):
if n > 0:
ret.append((self._makePackageObject(hdr, idx), n))
return ret
+ def searchNames(self, names=[]):
+ returnList = []
+ for name in names:
+ returnList.extend(self._search(name=name))
+ return returnList
def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None):
return self._search(name, epoch, ver, rel, arch)
diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 90cdfb3..7f00c83 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -750,7 +750,37 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
def getRequires(self, name, flags=None, version=(None, None, None)):
return self._search("requires", name, flags, version)
-
+ @catchSqliteException
+ def searchNames(self, names):
+ """return a list of packages matching any of the given names. This is
+ only a match on package name, nothing else"""
+
+ returnList = []
+ for (repo,cache) in self.primarydb.items():
+ cur = cache.cursor()
+ pat_sqls = []
+ qsql = """select pkgId,pkgKey,name,epoch,version,release,arch
+ from packages where """
+ for name in names:
+ pat_sqls.append("name = ?")
+ qsql = qsql + " OR ".join(pat_sqls)
+ #print qsql
+ executeSQL(cur, qsql, list(names))
+
+
+ for x in cur:
+ if self._key2pkg.get(repo, {}).has_key(x['pkgKey']):
+ po = self._key2pkg[repo][x['pkgKey']]
+ else:
+ po = self.pc(repo,x)
+ self._key2pkg.setdefault(repo, {})[po.pkgKey] = po
+
+ if self._pkgExcluded(po):
+ continue
+ returnList.append(po)
+
+ return returnList
+
@catchSqliteException
def searchPrco(self, name, prcotype):
"""return list of packages having prcotype name (any evr and flag)"""
More information about the Yum-cvs-commits
mailing list