[yum-cvs] yum/yum storagefactory.py, NONE, 1.1.2.1 __init__.py, 1.196.2.7, 1.196.2.8 repos.py, 1.90.2.1, 1.90.2.2
Tambet Ingo
tambet at linux.duke.edu
Wed May 24 14:15:51 UTC 2006
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv1741/yum
Modified Files:
Tag: yum-2_6_X
__init__.py repos.py
Added Files:
Tag: yum-2_6_X
storagefactory.py
Log Message:
2006-05-24 Tambet Ingo <tambet at ximian.com>
* yum/storagefactory.py: Implement. Chooses the fastest
available cache.
* yum/repos.py: Remove the cache choosing and creation from
here and move it to storagefactory.py.
* yum/__init__.py: Log the storage being used.
--- NEW FILE storagefactory.py ---
#!/usr/bin/python -tt
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Copyright 2004 Duke University
import repos
import Errors
class Storage:
def __init__(self):
pass
def Name(self):
pass
def GetCacheHandler(self, storedir, repoid, callback):
pass
def GetPackageSack(self):
pass
class StoragePickle(Storage):
def __init__(self):
import packages
import mdcache
self.packages = packages
self.mdcache = mdcache
def Name(self):
return "pickle"
def GetCacheHandler(self, storedir, repoid, callback):
return self.mdcache.RepodataParser(storedir, callback)
def GetPackageSack(self):
return repos.YumPackageSack(self.packages.YumAvailablePackage)
class StorageSqlite(Storage):
def __init__(self):
import sqlitecache
import sqlitesack
self.sqlitecache = sqlitecache
self.sqlitesack = sqlitesack
def Name(self):
return "sqlite"
def GetCacheHandler(self, storedir, repoid, callback):
return self.sqlitecache.RepodataParserSqlite(storedir, repoid, callback)
def GetPackageSack(self):
return self.sqlitesack.YumSqlitePackageSack(self.sqlitesack.YumAvailablePackageSqlite)
class StorageSqliteC(Storage):
def __init__(self):
import sqlitecachec
import sqlitesack
self.sqlitecache = sqlitecachec
self.sqlitesack = sqlitesack
def Name(self):
return "sqlite-c"
def GetCacheHandler(self, storedir, repoid, callback):
return self.sqlitecache.RepodataParserSqlite(storedir, repoid, callback)
def GetPackageSack(self):
return self.sqlitesack.YumSqlitePackageSack(self.sqlitesack.YumAvailablePackageSqlite)
def GetStorage():
storage = None
# Try to load storages, prefering the fastest one.
try:
storage = StorageSqliteC()
return storage
except:
pass
try:
storage = StorageSqlite()
return storage
except:
pass
try:
storage = StoragePickle()
return storage
except:
pass
raise Errors.YumBaseError, 'Could not find any working storages.'
Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.196.2.7
retrieving revision 1.196.2.8
diff -u -r1.196.2.7 -r1.196.2.8
--- __init__.py 24 May 2006 07:05:02 -0000 1.196.2.7
+++ __init__.py 24 May 2006 14:15:49 -0000 1.196.2.8
@@ -61,8 +61,7 @@
depsolve.Depsolve.__init__(self)
self.localdbimported = 0
self.repos = repos.RepoStorage() # class of repositories
- if (not self.repos.sqlite):
- self.log(1,"Warning, could not load sqlite, falling back to pickle")
+ self.log(1, "Using %s storage" % self.repos.storage.Name())
# Start with plugins disabled
self.disablePlugins()
Index: repos.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/repos.py,v
retrieving revision 1.90.2.1
retrieving revision 1.90.2.2
diff -u -r1.90.2.1 -r1.90.2.2
--- repos.py 19 Apr 2006 14:59:37 -0000 1.90.2.1
+++ repos.py 24 May 2006 14:15:49 -0000 1.90.2.2
@@ -32,6 +32,7 @@
from packages import YumAvailablePackage
import mdcache
import parser
+import storagefactory
_is_fnmatch_pattern = re.compile(r"[*?[]").search
@@ -95,27 +96,9 @@
# of repo options/misc data
self.callback = None # progress callback used for populateSack() for importing the xml files
self.cache = 0
- # Check to see if we can import sqlite stuff
- try:
- import sqlitecache
- import sqlitesack
- except ImportError:
- self.sqlite = False
- else:
- self.sqlite = True
- self.sqlitecache = sqlitecache
-
- self._selectSackType()
+ self.storage = storagefactory.GetStorage()
+ self.pkgSack = self.storage.GetPackageSack()
- def _selectSackType(self):
-
- if (self.sqlite):
- import sqlitecache
- import sqlitesack
- self.pkgSack = sqlitesack.YumSqlitePackageSack(sqlitesack.YumAvailablePackageSqlite)
- else:
- self.pkgSack = YumPackageSack(YumAvailablePackage)
-
def __str__(self):
return str(self.repos.keys())
@@ -267,17 +250,12 @@
for repo in myrepos:
if not hasattr(repo, 'cacheHandler'):
- if (self.sqlite):
- repo.cacheHandler = self.sqlitecache.RepodataParserSqlite(
- storedir=repo.cachedir,
- repoid=repo.id,
- callback=callback,
- )
- else:
- repo.cacheHandler = mdcache.RepodataParser(
- storedir=repo.cachedir,
- callback=callback
- )
+ repo.cacheHandler = self.storage.GetCacheHandler(
+ storedir=repo.cachedir,
+ repoid=repo.id,
+ callback=callback,
+ )
+
for item in data:
if self.pkgSack.added.has_key(repo.id):
if item in self.pkgSack.added[repo.id]:
More information about the Yum-cvs-commits
mailing list