[yum-cvs] yum/callbacks.py yum/__init__.py

Tim Lauridsen timlau at linux.duke.edu
Thu Aug 30 10:45:44 UTC 2007


 yum/__init__.py  |   25 +++++++++++++++----------
 yum/callbacks.py |    9 +++++----
 2 files changed, 20 insertions(+), 14 deletions(-)

New commits:
commit 003ef7e7faaad33fb3156fcf9501a47422325cbc
Author: Tim Lauridsen <tla at rasmil.dk>
Date:   Thu Aug 30 12:42:44 2007 +0200

    * Added extra processTransaction callback event PT_DOWNLOAD_PKGS called with packages to download.
    * Make the processTransaction Download & GPG check a little smarter, no need to call the download & GPG check code, if there is nothing to download.

diff --git a/yum/__init__.py b/yum/__init__.py
index 565d6c1..f7d6946 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2196,24 +2196,29 @@ class YumBase(depsolve.Depsolve):
         
         # Download Packages
         callback.event(callbacks.PT_DOWNLOAD)
-        pkgs = self._downloadPackages()
+        pkgs = self._downloadPackages(callback)
         # Check Package Signatures
-        callback.event(callbacks.PT_GPGCHECK)
-        self._checkSignatures(pkgs)
+        if pkgs != None:
+            callback.event(callbacks.PT_GPGCHECK)
+            self._checkSignatures(pkgs,callback)
         # Run Test Transaction
         callback.event(callbacks.PT_TEST_TRANS)
-        self._doTestTransaction(display=rpmTestDisplay)
+        self._doTestTransaction(callback,display=rpmTestDisplay)
         # Run Transaction
         callback.event(callbacks.PT_TRANSACTION)
-        self._doTransaction(display=rpmDisplay)
+        self._doTransaction(callback,display=rpmDisplay)
     
-    def _downloadPackages(self):
+    def _downloadPackages(self,callback):
         ''' Download the need packages in the Transaction '''
         # This can be overloaded by a subclass.    
         dlpkgs = map(lambda x: x.po, filter(lambda txmbr:
                                             txmbr.ts_state in ("i", "u"),
                                             self.tsInfo.getMembers()))
-           
+        # Check if there is something to do
+        if len(dlpkgs) == 0:
+            return None
+        # make callback with packages to download                                    
+        callback.event(callbacks.PT_DOWNLOAD_PKGS,dlpkgs)    
         try:
             probs = self.downloadPkgs(dlpkgs)
 
@@ -2229,7 +2234,7 @@ class YumBase(depsolve.Depsolve):
             raise yum.Errors.YumDownloadError, errstr
         return dlpkgs
 
-    def _checkSignatures(self,pkgs):
+    def _checkSignatures(self,pkgs,callback):
         ''' The the signatures of the downloaded packages '''
         # This can be overloaded by a subclass.    
         for po in pkgs:
@@ -2251,7 +2256,7 @@ class YumBase(depsolve.Depsolve):
         '''
         return False
 
-    def _doTestTransaction(self,display=None):
+    def _doTestTransaction(self,callback,display=None):
         ''' Do the RPM test transaction '''
         # This can be overloaded by a subclass.    
         if self.conf.rpm_check_debug:
@@ -2294,7 +2299,7 @@ class YumBase(depsolve.Depsolve):
         self.dsCallback = dscb
 
 
-    def _doTransaction(self,display=None):
+    def _doTransaction(self,callback,display=None):
         ''' do the RPM Transaction '''
         # This can be overloaded by a subclass.    
         self.initActionTs() # make a new, blank ts to populate
diff --git a/yum/callbacks.py b/yum/callbacks.py
index 10a2c43..dae704b 100644
--- a/yum/callbacks.py
+++ b/yum/callbacks.py
@@ -19,10 +19,11 @@ import logging
 
 # ProcessTransaction States
 
-PT_DOWNLOAD        = 0
-PT_GPGCHECK        = 1
-PT_TEST_TRANS      = 2
-PT_TRANSACTION     = 3
+PT_DOWNLOAD        = 10    # Start Download
+PT_DOWNLOAD_PKGS   = 11    # Packages to download
+PT_GPGCHECK        = 20    # Start Checkin Package Signatures
+PT_TEST_TRANS      = 30    # Start Test Transaction
+PT_TRANSACTION     = 40    # Start Transaction
 
 PT_MESSAGES = { PT_DOWNLOAD    : "Downloading Packages",
                 PT_GPGCHECK    : "Check Package Signatures",



More information about the Yum-cvs-commits mailing list