[yum-git] yum/sqlitesack.py

Florian Festi ffesti at linux.duke.edu
Tue May 27 11:32:13 UTC 2008


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

New commits:
commit 4a7acc768e4b466fe23c09435a2beff963461ecb
Author: Florian Festi <ffesti at redhat.com>
Date:   Thu Dec 13 17:53:01 2007 +0100

    Remove old excluded mechanism from SqliteSack

diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 31c4eb0..f0617bb 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -261,8 +261,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         self.primarydb = {}
         self.filelistsdb = {}
         self.otherdb = {}
-        self.excludes = {}
-        self._excludes = set() # of (repo, pkgKey)
+        self._excludes = { } # repo ->set(pkgKeys)
         self._all_excludes = {}
         self._search_cache = {
             'provides' : { },
@@ -295,14 +294,16 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
             return 0
             
         exclude_num = 0
-        for repo in self.excludes:
-            exclude_num += len(self.excludes[repo])
-        if hasattr(self, 'pkgobjlist'):
+        for excludes in self._excludes.values():
+            exclude_num += len(excludes)
+
+        if hasattr(self, 'pkgobjlist') and not self._all_excludes:
             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
 
@@ -331,9 +332,14 @@ 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)
 
@@ -349,33 +355,25 @@ 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 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) )
+        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)
 
     def _delAllPackages(self, repo):
         """ Exclude all packages from the repo. """
         self._all_excludes[repo] = True
-        if repo in self.excludes:
-            del self.excludes[repo]
+        if repo in self._excludes:
+            self._excludes[repo].clear()
         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 (repo, pkgKey) in self._excludes
+        return self._excludes.has_key(repo) and pkgKey in self._excludes[repo]
 
     def _pkgExcluded(self, po):
         return self._pkgKeyExcluded(po.repo, po.pkgKey)
@@ -398,9 +396,6 @@ 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