Just for completeness:

There is a patch removing the old - now unnecessary pkgId based exclude mechanism. We agreed on IRC that we cannot remove it right now as it is not as private as it probably should.

Florian
>From 6bcdda926901f455627c317398f6a5a6109bf6f7 Mon Sep 17 00:00:00 2001
From: Florian Festi <[EMAIL PROTECTED]>
Date: Thu, 13 Dec 2007 17:53:01 +0100
Subject: [PATCH] Remove old excluded mechanism from SqliteSack

---
 yum/sqlitesack.py |   22 +++-------------------
 1 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/yum/sqlitesack.py b/yum/sqlitesack.py
index 78797cc..9394862 100644
--- a/yum/sqlitesack.py
+++ b/yum/sqlitesack.py
@@ -224,7 +224,6 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         self.primarydb = {}
         self.filelistsdb = {}
         self.otherdb = {}
-        self.excludes = {}
         self._excludes = set() # of (repo, pkgKey)
         self._search_cache = {
             'provides' : { },
@@ -235,14 +234,12 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
     @catchSqliteException
     def __len__(self):
         exclude_num = 0
-        for repo in self.excludes:
-            exclude_num += len(self.excludes[repo])
         if hasattr(self, 'pkgobjlist'):
             return len(self.pkgobjlist) - exclude_num
         for (rep,cache) in self.primarydb.items():
             cur = cache.cursor() # Does all repos, just using a cache
             executeSQL(cur, "select count(pkgId) from packages")
-            return cur.fetchone()[0] - exclude_num
+            return cur.fetchone()[0] - len(self._excludes)
 
     @catchSqliteException
     def close(self):
@@ -253,7 +250,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         self.primarydb = {}
         self.filelistsdb = {}
         self.otherdb = {}
-        self.excludes = {}
+        self._excludes.clear()
         self._search_cache = {
             'provides' : { },
             'requires' : { },
@@ -275,18 +272,8 @@ 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) )
 
-    def _excluded(self, repo, pkgId):
-        if self.excludes.has_key(repo):
-            if self.excludes[repo].has_key(pkgId):
-                return True
-                
-        return False
-
     def _pkgKeyExcluded(self, repo, pkgKey):
         return (repo, pkgKey) in self._excludes
 
@@ -310,9 +297,6 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
         else:
             self.added[repo] = []
 
-        if not self.excludes.has_key(repo): 
-            self.excludes[repo] = {}
-
         if datatype == 'metadata':
             self.primarydb[repo] = dataobj
         elif datatype == 'filelists':
@@ -784,7 +768,7 @@ class YumSqlitePackageSack(yumRepo.YumPackageSack):
             self._buildPkgObjList(repoid)
 
         for po in self.pkgobjlist:
-            if self._excluded(po.repo, po.pkgId):
+            if self._pkgExcluded(po):
                 continue
             returnList.append(po)
 
-- 
1.5.3.3

_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to