[yum-cvs] yum/yum __init__.py, 1.83, 1.84 depsolve.py, 1.55, 1.56 packages.py, 1.34, 1.35 transactioninfo.py, 1.11, 1.12

Seth Vidal skvidal at login.linux.duke.edu
Mon Feb 14 06:00:22 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv2762/yum

Modified Files:
	__init__.py depsolve.py packages.py transactioninfo.py 
Log Message:

- added in Terje's new patch for the rpm callback
- setup some background for some items in transactioninfo.py - specifically
storing the package object in the transaction member object.
- made pkgtup an attribute of every package object rather than a callable
method.


Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -r1.83 -r1.84
--- __init__.py	11 Feb 2005 09:10:54 -0000	1.83
+++ __init__.py	14 Feb 2005 06:00:20 -0000	1.84
@@ -271,12 +271,6 @@
     def buildTransaction(self):
         """go through the packages in the transaction set, find them in the
            packageSack or rpmdb, and pack up the ts accordingly"""
-        #FIXME - dup this function out into cli.py to add callbacks for
-        # the depresolution process
-        # callbacks should be:
-        # - each package added to ts
-        # - each dep processed
-        # - each restart of dep resolution loop
         (rescode, restring) = self.resolveDeps()
         return rescode, restring
 
@@ -435,7 +429,7 @@
                 return 0
 
         ylp = YumLocalPackage(self.read_ts, fo)
-        if ylp.pkgtup() != po.pkgtup():
+        if ylp.pkgtup != po.pkgtup:
             if raiseError:
                 raise URLGrabError(-1, 'Package does not match intended download')
             else:
@@ -528,7 +522,7 @@
                 
         yip = YumInstalledPackage(hdr) # we're using YumInstalledPackage b/c
                                        # it takes headers <shrug>
-        if yip.pkgtup() != po.pkgtup():
+        if yip.pkgtup != po.pkgtup:
             if raiseError:
                 raise URLGrabError(-1, 'Header does not match intended download')
             else:
@@ -726,7 +720,7 @@
                 removed+=1
         msg = '%d metadata files removed' % removed
         return 0, [msg]
-        
+
     def sortPkgObj(self, pkg1 ,pkg2):
         """sorts a list of package tuples by name"""
         if pkg1.name > pkg2.name:
@@ -735,7 +729,7 @@
             return 0
         else:
             return -1
-    
+        
     def doPackageLists(self, pkgnarrow='all'):
         """generates lists of packages, un-reduced, based on pkgnarrow option"""
         
@@ -815,7 +809,7 @@
             avail = self.pkgSack.simplePkgList()
             for hdr in self.rpmdb.getHdrList():
                 po = YumInstalledPackage(hdr)
-                if po.pkgtup() not in avail:
+                if po.pkgtup not in avail:
                     extras.append(po)
 
         # obsoleting packages (and what they obsolete)
@@ -1054,7 +1048,7 @@
         
         # look it up in the self.localPackages first:
         for po in self.localPackages:
-            if po.pkgtup() == pkgtup:
+            if po.pkgtup == pkgtup:
                 return po
                 
         pkgs = self.pkgSack.searchNevra(name=n, arch=a, epoch=e, ver=v, rel=r)

Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -r1.55 -r1.56
--- depsolve.py	11 Feb 2005 06:45:44 -0000	1.55
+++ depsolve.py	14 Feb 2005 06:00:20 -0000	1.56
@@ -268,7 +268,7 @@
             hdrs = self.rpmdb.returnHeaderByTuple(pkgtuple)
             for hdr in hdrs:
                 po = packages.YumInstalledPackage(hdr)
-                if self.tsInfo.exists(po.pkgtup()):
+                if self.tsInfo.exists(po.pkgtup):
                     self.log(7, 'Skipping package already in Transaction Set: %s' % po)
                     continue
                 if niceformatneed in po.requiresList():
@@ -308,7 +308,7 @@
                 for po in pkgs:
                     # if one of them is (name, arch) already in the tsInfo somewhere, 
                     # pop it out of the list
-                    (n,a,e,v,r) = po.pkgtup()
+                    (n,a,e,v,r) = po.pkgtup
                     thismode = self.tsInfo.getMode(name=n, arch=a)
                     if thismode is not None:
                         self.log(5, '   %s already in ts %s, skipping' % (po, thismode))
@@ -335,7 +335,7 @@
             
             requirementTuple = (needname, flags, needversion)
             
-            CheckDeps, missingdep = self._requiringFromInstalled(requiringPkg.pkgtup(), requirementTuple, errormsgs)
+            CheckDeps, missingdep = self._requiringFromInstalled(requiringPkg.pkgtup, requirementTuple, errormsgs)
 
 
         return (CheckDeps, missingdep, conflicts, errormsgs)
@@ -404,18 +404,18 @@
                     pkgs = self.pkgSack.returnNewestByName(name)
                     archs = []
                     for pkg in pkgs:
-                        (n,a,e,v,r) = pkg.pkgtup()
+                        (n,a,e,v,r) = pkg.pkgtup
                         archs.append(a)
                     a = rpmUtils.arch.getBestArchFromList(archs)
                     po = self.pkgSack.returnNewestByNameArch((n,a))
                 else:
                     po = self.pkgSack.returnNewestByNameArch((name,arch))
-                if po.pkgtup() not in uplist:
+                if po.pkgtup not in uplist:
                     po = None
 
             if po:
                 for (new, old) in self.up.getUpdatesTuples():
-                    if po.pkgtup() == new:
+                    if po.pkgtup == new:
                         updated_pkg = packages.YumInstalledPackage(self.rpmdb.returnHeaderByTuple(old)[0])
                         txmbr = self.tsInfo.addUpdate(po, updated_pkg)
                         txmbr.setAsDep()
@@ -476,7 +476,7 @@
         # get rid of things that are already in the rpmdb - b/c it's pointless to use them here
 
         for pkg in provSack.returnPackages():
-            if pkg.pkgtup() in self.rpmdb.getPkgList(): # is it already installed?
+            if pkg.pkgtup in self.rpmdb.getPkgList(): # is it already installed?
                 self.log(5, '%s is in providing packages but it is already installed, removing.' % pkg)
                 provSack.delPackage(pkg)
                 continue
@@ -488,7 +488,7 @@
         
             tspkgs = []
             if not self.allowedMultipleInstalls(pkg):
-                (n, a, e, v, r) = pkg.pkgtup()
+                (n, a, e, v, r) = pkg.pkgtup
                 
                 # from ts
                 tspkgs = self.tsInfo.matchNaevr(name=pkg.name, arch=pkg.arch)
@@ -521,7 +521,7 @@
         # iterate the provSack briefly, if we find the package is already in the 
         # tsInfo then just skip this run
         for pkg in provSack.returnPackages():
-            (n,a,e,v,r) = pkg.pkgtup()
+            (n,a,e,v,r) = pkg.pkgtup
             pkgmode = self.tsInfo.getMode(name=n, arch=a, epoch=e, ver=v, rel=r)
             if pkgmode in ['i', 'u']:
                 self.doUpdateSetup()
@@ -545,7 +545,7 @@
         elif len(newest) == 1:
             best = newest[0]
         
-        if best.pkgtup() in self.rpmdb.getPkgList(): # is it already installed?
+        if best.pkgtup in self.rpmdb.getPkgList(): # is it already installed?
             missingdep = 1
             checkdeps = 0
             msg = 'Missing Dependency: %s is needed by package %s' % (needname, name)
@@ -609,13 +609,13 @@
                     pkgs = self.pkgSack.returnNewestByName(confname)
                     archs = []
                     for pkg in pkgs:
-                        (n,a,e,v,r) = pkg.pkgtup()
+                        (n,a,e,v,r) = pkg.pkgtup
                         archs.append(a)
                     a = rpmUtils.arch.getBestArchFromList(archs)
                     po = self.pkgSack.returnNewestByNameArch((n,a))
                 else:
                     po = self.pkgSack.returnNewestByNameArch((confname,confarch))
-                if po.pkgtup() not in uplist:
+                if po.pkgtup not in uplist:
                     po = None
 
         if po:

Index: packages.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/packages.py,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- packages.py	20 Jan 2005 06:59:18 -0000	1.34
+++ packages.py	14 Feb 2005 06:00:20 -0000	1.35
@@ -140,7 +140,7 @@
     return returnlist
 
 def bestPackage(pkg1, pkg2):
-    """compares two packages (assumes the names are the same), and returns
+    """compares two package tuples (assumes the names are the same), and returns
        the one with the best version and the best arch, the sorting is:
        for compatible arches, the highest version is best so:
        foo-1.1-1.i686 is better than foo-1.1-1.i386 on an i686 machine
@@ -178,6 +178,7 @@
         self.epoch = self.doepoch()
         self.version = self.tagByName('version')
         self.release = self.tagByName('release')
+        self.pkgtup = self._pkgtup()
         self.repoid = 'installed'
         self.summary = self.tagByName('summary')
         self.description = self.tagByName('description')
@@ -191,7 +192,7 @@
             val = '%s - %s:%s-%s.%s' % (self.name, self.epoch, self.version,
                                            self.release, self.arch)
         return val
-        
+
     def tagByName(self, tag):
         data = self.hdr[tag]
         return data
@@ -214,6 +215,7 @@
     def returnLocalHeader(self):
         return self.hdr
 
+
     def getProvidesNames(self):
         """returns a list of providesNames"""
         
@@ -241,7 +243,7 @@
         
         return reqlist
 
-    def pkgtup(self):
+    def _pkgtup(self):
         return (self.name, self.arch, self.epoch, self.version, self.release)
     
     def size(self):
@@ -291,9 +293,12 @@
         self.release = self.tagByName('release')
         self.summary = self.tagByName('summary')
         self.description = self.tagByName('description')
+        self.pkgtup = self._pkgtup()
         
     
-        
+    def _pkgtup(self):
+        return (self.name, self.arch, self.epoch, self.version, self.release)
+    
     def localPkg(self):
         return self.localpath
     
@@ -316,11 +321,12 @@
         self.release = self.returnSimple('release')
         self.arch = self.returnSimple('arch')
         self.repoid = self.returnSimple('repoid')
+        self.pkgtup = self._pkgtup()
 
     def size(self):
         return self.returnSimple('packagesize')
 
-    def pkgtup(self):
+    def _pkgtup(self):
         return self.returnPackageTuple()
 
     def printVer(self):

Index: transactioninfo.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/transactioninfo.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- transactioninfo.py	30 Jan 2005 19:05:24 -0000	1.11
+++ transactioninfo.py	14 Feb 2005 06:00:20 -0000	1.12
@@ -177,7 +177,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'repo'
         txmbr.output_state = 'installing'
         txmbr.ts_state = 'u'
@@ -196,7 +197,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po        
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'repo'
         txmbr.output_state = 'installing'
         txmbr.ts_state = 'i'
@@ -216,7 +218,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po        
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'installed'
         txmbr.output_state = 'erasing'
         txmbr.ts_state = 'e'
@@ -234,7 +237,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po        
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'repo'
         txmbr.output_state = 'updating'
         txmbr.ts_state = 'u'
@@ -245,7 +249,7 @@
         txmbr.rel = po.release
         txmbr.repoid = po.repoid
         if oldpo:
-            txmbr.relatedto.append((oldpo.pkgtup(), 'updates'))
+            txmbr.relatedto.append((oldpo.pkgtup, 'updates'))
         self.add(txmbr)
         return txmbr
 
@@ -254,7 +258,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po        
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'repo'
         txmbr.output_state = 'obsoleting'
         txmbr.ts_state = 'u'
@@ -264,7 +269,7 @@
         txmbr.ver = po.version
         txmbr.rel = po.release
         txmbr.repoid = po.repoid
-        txmbr.relatedto.append((oldpo.pkgtup(), 'obsoletes'))
+        txmbr.relatedto.append((oldpo.pkgtup, 'obsoletes'))
         self.add(txmbr)
         return txmbr
 
@@ -273,7 +278,8 @@
            takes a packages object and returns a TransactionMember Object"""
     
         txmbr = TransactionMember()
-        txmbr.pkgtup = po.pkgtup()
+        txmbr.po = po        
+        txmbr.pkgtup = po.pkgtup
         txmbr.current_state = 'installed'
         txmbr.output_state = 'obsoleted'
         txmbr.ts_state = None
@@ -283,7 +289,7 @@
         txmbr.ver = po.version
         txmbr.rel = po.release
         txmbr.repoid = po.repoid
-        txmbr.relatedto.append((obsoleting_po.pkgtup(), 'obsoletedby'))
+        txmbr.relatedto.append((obsoleting_po.pkgtup, 'obsoletedby'))
         self.add(txmbr)
         return txmbr
 
@@ -294,6 +300,7 @@
     
     def __init__(self):
         # holders for data
+        self.po = None # package object
         self.pkgtup = None # package tuple
         self.current_state = None # where the package currently is (repo, installed)
         self.ts_state = None # what state to put it into in the transaction set




More information about the Yum-cvs-commits mailing list