[yum-cvs] yum/yum packages.py,1.43,1.44

Seth Vidal skvidal at linux.duke.edu
Tue Apr 11 21:34:37 UTC 2006


Update of /home/groups/yum/cvs/yum/yum
In directory login1.linux.duke.edu:/tmp/cvs-serv21233/yum

Modified Files:
	packages.py 
Log Message:
merge in jbowes packages patch - 3/4



Index: packages.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/packages.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- packages.py	5 Jan 2006 01:30:35 -0000	1.43
+++ packages.py	11 Apr 2006 21:34:35 -0000	1.44
@@ -111,23 +111,26 @@
     """derived class for the repomd packageobject and RpmBase packageobject yum
        uses this for dealing with packages in a repository"""
 
-    def __init__(self, pkgdict, repoid):
+    def __init__(self, repoid, pkgdict = None):
         repomd.packageObject.PackageObject.__init__(self)
         repomd.packageObject.RpmBase.__init__(self)
         
-        self.importFromDict(pkgdict, repoid)
-        # quick, common definitions
-        self.name = self.returnSimple('name')
-        self.epoch = self.returnSimple('epoch')
-        self.version = self.returnSimple('version')
-        self.release = self.returnSimple('release')
-        self.ver = self.returnSimple('version')
-        self.rel = self.returnSimple('release')
-        self.arch = self.returnSimple('arch')
-        self.repoid = self.returnSimple('repoid')
-        self.pkgtup = self._pkgtup()
+        self.simple['repoid'] = repoid
+        self.repoid = repoid
         self.state = None
         
+        if pkgdict != None:
+            self.importFromDict(pkgdict)
+            # quick, common definitions
+            self.name = self.returnSimple('name')
+            self.epoch = self.returnSimple('epoch')
+            self.version = self.returnSimple('version')
+            self.release = self.returnSimple('release')
+            self.ver = self.returnSimple('version')
+            self.rel = self.returnSimple('release')
+            self.arch = self.returnSimple('arch')
+            self.pkgtup = self._pkgtup()
+         
     def size(self):
         return self.returnSimple('packagesize')
 
@@ -223,11 +226,10 @@
         
         return reqlist
         
-    def importFromDict(self, pkgdict, repoid):
+    def importFromDict(self, pkgdict):
         """handles an mdCache package dictionary item to populate out 
            the package information"""
         
-        self.simple['repoid'] = repoid
         # translates from the pkgdict, populating out the information for the
         # packageObject
         
@@ -311,10 +313,13 @@
             
 
 
-class YumInstalledPackage(YumAvailablePackage):
-    """super class for dealing with packages in the rpmdb"""
-    def __init__(self, hdr):
+class YumHeaderPackage(YumAvailablePackage):
+    """Package object built from an rpm header"""
+    def __init__(self, hdr, repoid):
         """hand in an rpm header, we'll assume it's installed and query from there"""
+       
+        YumAvailablePackage.__init__(self, repoid)
+
         self.hdr = hdr
         self.name = self.tagByName('name')
         self.arch = self.tagByName('arch')
@@ -324,11 +329,9 @@
         self.ver = self.tagByName('version')
         self.rel = self.tagByName('release')
         self.pkgtup = self._pkgtup()
-        self.repoid = 'installed'
         self.summary = self.tagByName('summary')
         self.description = self.tagByName('description')
         self.pkgid = self.tagByName(rpm.RPMTAG_SHA1HEADER)
-        self.state = None
         
     def __str__(self):
         if self.epoch == '0':
@@ -407,9 +410,14 @@
     def compactPrint(self):
         ver = self.printVer()
         return "%s.%s %s" % (self.name, self.arch, ver)
-    
 
-class YumLocalPackage(YumInstalledPackage):
+
+class YumInstalledPackage(YumHeaderPackage):
+    """super class for dealing with packages in the rpmdb"""
+    def __init__(self, hdr):
+        YumHeaderPackage.__init__(self, hdr, "installed")
+
+class YumLocalPackage(YumHeaderPackage):
     """Class to handle an arbitrary package from a file path
        this inherits most things from YumInstalledPackage because
        installed packages and an arbitrary package on disk act very
@@ -426,27 +434,15 @@
                  
         self.pkgtype = 'local'
         self.localpath = filename
-        self.repoid = filename
+        
         try:
-            self.hdr = rpmUtils.miscutils.hdrFromPackage(ts, self.localpath)
+            hdr = rpmUtils.miscutils.hdrFromPackage(ts, self.localpath)
         except rpmUtils.RpmUtilsError, e:
             raise Errors.MiscError, \
                 'Could not open local rpm file: %s' % self.localpath
-        self.name = self.tagByName('name')
-        self.arch = self.tagByName('arch')
-        self.epoch = self.doepoch()
-        self.version = self.tagByName('version')
-        self.release = self.tagByName('release')
-        self.ver = self.tagByName('version')
-        self.rel = self.tagByName('release')
-        self.summary = self.tagByName('summary')
-        self.description = self.tagByName('description')
-        self.pkgtup = self._pkgtup()
-        self.state = None
-    
-    def _pkgtup(self):
-        return (self.name, self.arch, self.epoch, self.version, self.release)
-    
+       
+        YumHeaderPackage.__init__(self, hdr, filename)
+        
     def localPkg(self):
         return self.localpath
     




More information about the Yum-cvs-commits mailing list