[yum-cvs] yum/yum packages.py,1.60,1.61 sqlitesack.py,1.43,1.44
Seth Vidal
skvidal at linux.duke.edu
Sat Sep 2 01:16:32 UTC 2006
- Previous message: [yum-cvs] yum/yum depsolve.py,1.95,1.96 rpmsack.py,1.21,1.22
- Next message: [yum-cvs] yum/yum depsolve.py, 1.96, 1.97 packages.py, 1.61, 1.62 sqlitesack.py, 1.44, 1.45
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv3342/yum
Modified Files:
packages.py sqlitesack.py
Log Message:
- properties do not behave like other subclassable items - which sucks
- add filelists, dirlists and ghostlist property attributes to all package objects
Index: packages.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/packages.py,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- packages.py 29 Aug 2006 15:51:03 -0000 1.60
+++ packages.py 2 Sep 2006 01:16:30 -0000 1.61
@@ -22,6 +22,7 @@
import re
import types
import fnmatch
+import stat
from rpmUtils import RpmUtilsError
import rpmUtils.arch
import rpmUtils.miscutils
@@ -271,16 +272,26 @@
def returnFileEntries(self, ftype='file'):
"""return list of files based on type"""
# fixme - maybe should die - use direct access to attribute
- if self.files.has_key(ftype):
- return self.files[ftype]
- else:
- return []
+ if self.files:
+ if self.files.has_key(ftype):
+ return self.files[ftype]
+ return []
def returnFileTypes(self):
"""return list of types of files in the package"""
# maybe should die - use direct access to attribute
return self.files.keys()
+ def returnDirEntries(self):
+ return self.returnFileEntries(ftype='dir')
+
+ def returnGhostEntries(self):
+ return self.returnFileEntries(ftype='ghost')
+
+ filelists = property(returnFileEntries)
+ dirlists = property(returnDirEntries)
+ ghostlists = property(returnGhostEntries)
+
class YumAvailablePackage(PackageObject, RpmBase):
"""derived class for the packageobject and RpmBase packageobject yum
@@ -349,6 +360,7 @@
conflicts = property(_conflicts)
providesnames = property(getProvidesNames)
+
def _size(self):
return self.returnSimple('packagesize')
@@ -426,7 +438,7 @@
return reqlist
-
+
def importFromDict(self, pkgdict):
"""handles an mdCache package dictionary item to populate out
@@ -535,7 +547,8 @@
self.description = self.tagByName('description')
self.pkgid = self.tagByName(rpm.RPMTAG_SHA1HEADER)
self.size = self.tagByName('size')
-
+ self.__loadedfiles = False
+ self.__mode_cache = {}
self._populatePrco()
def __str__(self):
@@ -590,8 +603,50 @@
def returnLocalHeader(self):
return self.hdr
+
-
+ def _loadFiles(self):
+ files = self.tagByName('filenames')
+ fileflags = self.tagByName('fileflags')
+ filemodes = self.tagByName('filemodes')
+ filetuple = zip(files, filemodes, fileflags)
+ if not self.__loadedfiles:
+ for (file, mode, flag) in filetuple:
+ #garbage checks
+ if mode is None or mode == '':
+ if not self.files.has_key('file'):
+ self.files['file'] = []
+ self.files['file'].append(file)
+ continue
+ if not self.__mode_cache.has_key(mode):
+ self.__mode_cache[mode] = stat.S_ISDIR(mode)
+
+ if self.__mode_cache[mode]:
+ if not self.files.has_key('dir'):
+ self.files['dir'] = []
+ self.files['dir'].append(file)
+ else:
+ if flag is None:
+ if not self.files.has_key('file'):
+ self.files['file'] = []
+ self.files['file'].append(file)
+ else:
+ if (flag & 64):
+ if not self.files.has_key('ghost'):
+ self.files['ghost'] = []
+ self.files['ghost'].append(file)
+ continue
+ if not self.files.has_key('file'):
+ self.files['file'] = []
+ self.files['file'].append(file)
+ self.__loadedfiles = True
+
+ def returnFileEntries(self, ftype='file'):
+ """return list of files based on type"""
+ self._loadFiles()
+ return YumAvailablePackage.returnFileEntries(self,ftype)
+
+ filelists = property(returnFileEntries)
class YumInstalledPackage(YumHeaderPackage):
"""super class for dealing with packages in the rpmdb"""
Index: sqlitesack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/sqlitesack.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- sqlitesack.py 31 Aug 2006 05:11:05 -0000 1.43
+++ sqlitesack.py 2 Sep 2006 01:16:30 -0000 1.44
@@ -93,6 +93,13 @@
if self.files is not None:
return
result = {}
+
+ if not self.sack.filelistsdb.has_key(self.repoid):
+ #FIXME should this raise an exception or should it try to download
+ # the filelists.xml and import it?
+ # primarydb import of files should happen, then!
+ self.files = result
+ return
cache = self.sack.filelistsdb[self.repoid]
cur = cache.cursor()
cur.execute("select filelist.dirname as dirname, "
- Previous message: [yum-cvs] yum/yum depsolve.py,1.95,1.96 rpmsack.py,1.21,1.22
- Next message: [yum-cvs] yum/yum depsolve.py, 1.96, 1.97 packages.py, 1.61, 1.62 sqlitesack.py, 1.44, 1.45
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Yum-cvs-commits
mailing list