[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