[Yum-devel] [PATCH] Add total removal size, when just doing removes. BZ 495595

James Antill james at and.org
Thu Apr 29 15:55:54 UTC 2010


---
 cli.py    |   12 ++++++++++--
 output.py |   20 ++++++++++++++++++++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/cli.py b/cli.py
index 2977ca8..2355240 100644
--- a/cli.py
+++ b/cli.py
@@ -416,12 +416,18 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
         
         # Check which packages have to be downloaded
         downloadpkgs = []
+        rmpkgs = []
         stuff_to_download = False
         install_only = True
+        remove_only  = True
         for txmbr in self.tsInfo.getMembers():
             if txmbr.ts_state not in ('i', 'u'):
                 install_only = False
+                po = txmbr.po
+                if po:
+                    rmpkgs.append(po)
             else:
+                remove_only = False
                 stuff_to_download = True
                 po = txmbr.po
                 if po:
@@ -434,8 +440,10 @@ class YumBaseCli(yum.YumBase, output.YumOutput):
 
         # Report the total download size to the user, so he/she can base
         # the answer on this info
-        if stuff_to_download:
-            self.reportDownloadSize(downloadpkgs, install_only)
+        if not stuff_to_download:
+            self.reportRemoveSize(rmpkgs)
+        else:
+            self.reportDownloadSize(downloadpkgs, install_only, remove_only)
         
         # confirm with user
         if self._promptWanted():
diff --git a/output.py b/output.py
index 452f8a2..95564e1 100755
--- a/output.py
+++ b/output.py
@@ -927,6 +927,26 @@ class YumOutput:
                 self.verbose_logger.log(logginglevels.INFO_1,
                                         _("Installed size: %s"),
                                         self.format_number(insize))
+
+    def reportRemoveSize(self, packages):
+        """Report the total size of packages being removed. """
+        totsize = 0
+        error = False
+        for pkg in packages:
+            # Just to be on the safe side, if for some reason getting
+            # the package size fails, log the error and don't report download
+            # size
+            try:
+                size = int(pkg.size)
+                totsize += size
+            except:
+                error = True
+                self.logger.error(_('There was an error calculating installed size'))
+                break
+        if (not error):
+            self.verbose_logger.log(logginglevels.INFO_1,
+                                    _("Installed size: %s"),
+                                    self.format_number(totsize))
             
     def listTransaction(self):
         """returns a string rep of the  transaction in an easy-to-read way."""
-- 
1.7.0.1



More information about the Yum-devel mailing list