[yum-git] Branch 'yum-3_2_X' - yum/sqlitesack.py

James Antill james at linux.duke.edu
Mon Jun 2 13:44:02 UTC 2008


 yum/sqlitesack.py |   49 +++++++++++++++++++++++++++----------------------
 1 file changed, 27 insertions(+), 22 deletions(-)

New commits:
commit 9c1f14cea5ca9e920bab2b30af0c6e2ebf403a82
Author: James Antill <james at and.org>
Date:   Mon Jun 2 09:43:43 2008 -0400

    Revert "Remove old excluded mechanism from SqliteSack"
    
    This reverts commit 4a7acc768e4b466fe23c09435a2beff963461ecb.
    
     This shouldn't be on the stable branch.

diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 7ab7eb0..6b66e31 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -261,7 +261,8 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         self.primarydb = {}
         self.filelistsdb = {}
         self.otherdb = {}
-        self._excludes = { } # repo ->set(pkgKeys)
+        self.excludes = {}
+        self._excludes = set() # of (repo, pkgKey)
         self._all_excludes = {}
         self._search_cache = {
             'provides' : { },
@@ -294,16 +295,14 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
             return 0
             
         exclude_num = 0
-        for excludes in self._excludes.values():
-            exclude_num += len(excludes)
-
-        if hasattr(self, 'pkgobjlist') and not self._all_excludes:
+        for repo in self.excludes:
+            exclude_num += len(self.excludes[repo])
+        if hasattr(self, 'pkgobjlist'):
             return len(self.pkgobjlist) - exclude_num
         
         pkg_num = 0
+        sql = "SELECT count(pkgId) FROM packages"
         for repo in self.primarydb:
-            if repo in self._all_excludes:
-                continue
             pkg_num += self._sql_MD_pkg_num('primary', repo)
         return pkg_num - exclude_num
 
@@ -332,14 +331,9 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         self.primarydb = {}
         self.filelistsdb = {}
         self.otherdb = {}
+        self.excludes = {}
+        self._excludes = set()
         self._all_excludes = {}
-        self._excludes.clear()
-        self._search_cache = {
-            'provides' : { },
-            'requires' : { },
-            }
-        if hasattr(self, 'pkgobjlist'):
-            del self.pkgobjlist
 
         yumRepo.YumPackageSack.close(self)
 
@@ -355,25 +349,33 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
     # Because we don't want to remove a package from the database we just
     # add it to the exclude list
     def delPackage(self, obj):
-        if obj.repo in self._all_excludes:
-            return
-        if not self._excludes.has_key(obj.repo):
-            self._excludes[obj.repo] = set()
-        self._excludes[obj.repo].add(obj.pkgKey)
+        if not self.excludes.has_key(obj.repo):
+            self.excludes[obj.repo] = {}
+        self.excludes[obj.repo][obj.pkgId] = 1
+        self._excludes.add( (obj.repo, obj.pkgKey) )
 
     def _delAllPackages(self, repo):
         """ Exclude all packages from the repo. """
         self._all_excludes[repo] = True
-        if repo in self._excludes:
-            self._excludes[repo].clear()
+        if repo in self.excludes:
+            del self.excludes[repo]
         if repo in self._key2pkg:
             del self._key2pkg[repo]
 
+    def _excluded(self, repo, pkgId):
+        if repo in self._all_excludes:
+            return True
+        
+        if repo in self.excludes and pkgId in self.excludes[repo]:
+            return True
+                
+        return False
+
     def _pkgKeyExcluded(self, repo, pkgKey):
         if repo in self._all_excludes:
             return True
 
-        return self._excludes.has_key(repo) and pkgKey in self._excludes[repo]
+        return (repo, pkgKey) in self._excludes
 
     def _pkgExcluded(self, po):
         return self._pkgKeyExcluded(po.repo, po.pkgKey)
@@ -396,6 +398,9 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         else:
             self.added[repo] = []
 
+        if not self.excludes.has_key(repo): 
+            self.excludes[repo] = {}
+
         if dataobj is None:
             raise Errors.RepoError, "Tried to add None %s to %s" % (datatype, repo)
 



More information about the Yum-cvs-commits mailing list