---
 test/skipbroken-tests.py |   19 ++++++++++++++++++-
 test/testbase.py         |   12 +++++++-----
 yum/__init__.py          |   16 ++++++++++------
 3 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/test/skipbroken-tests.py b/test/skipbroken-tests.py
index c1d0c1f..9f09e87 100644
--- a/test/skipbroken-tests.py
+++ b/test/skipbroken-tests.py
@@ -598,7 +598,24 @@ class SkipBrokenTests(DepsolveTests):
         self.tsInfo.addUpdate(u1, oldpo=i2)
         self.assertEquals('empty', *self.resolveCode(skip=True))
         self.assertResult([i1,i2])
-        
+ 
+    def testDowngrade1(self):
+        '''
+        bar require foolib=2.0 provided by foo-1.2
+        foo-1.2 is downgraded to foo-1.1 there only contains foolib=1.0
+        so bar requirement is broken and the downgrade should be removed from
+        transaction
+        '''
+        i1 = self.instPackage('foo', '1.2')
+        i1.addProvides('foolib', 'EQ', ('0', '2', '0'))
+        i2 = self.instPackage('bar', '1.0')
+        i2.addRequires('foolib', 'EQ', ('0', '2', '0'))
+        d1 = self.repoPackage('foo', '1.1')
+        d1.addProvides('foolib', 'EQ', ('0', '1', '0'))
+        self.tsInfo.addDowngrade(d1, oldpo=i1)
+        self.assertEquals('empty', *self.resolveCode(skip=True))
+        self.assertResult([i1, i2])
+       
 
     def testMissingfileReqIptabes(self):    
         '''
diff --git a/test/testbase.py b/test/testbase.py
index 81591ad..d0a15ad 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -131,15 +131,17 @@ class DepSolveProgressCallBack:
     
     def pkgAdded(self, pkgtup, mode):
         modedict = { 'i': _('installed'),
-                     'u': _('updated'),
-                     'od': _('obsoleted'),
-                     'o': _('obsoleting'),
+                     'u': _('an update'),
                      'e': _('erased'),
-                     'ud':_('update'),}
+                     'r': _('reinstalled'),
+                     'd': _('a downgrade'),
+                     'o': _('obsoleting'),
+                     'ud': _('updated'),
+                     'od': _('obsoleted'),}
         (n, a, e, v, r) = pkgtup
         modeterm = modedict[mode]
         self.verbose_logger.log(logginglevels.INFO_2,
-            _('---> Package %s.%s %s:%s-%s set to be %s'), n, a, e, v, r,
+            _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r,
             modeterm)
         
     def start(self):
diff --git a/yum/__init__.py b/yum/__init__.py
index 234b599..11e019a 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1057,7 +1057,7 @@ class YumBase(depsolve.Depsolve):
             # and skip-broken shouldn't care too much about speed.
             self.rpmdb.transactionReset()
             self.installedFileRequires = None # Kind of hacky
-            self.verbose_logger.debug(_("Skip-broken round %i"), count)
+            self.verbose_logger.debug("SKIPBROKEN: ########### Round %i 
################" , count)
             self._printTransaction()        
             depTree = self._buildDepTree()
             startTs = set(self.tsInfo)
@@ -1114,7 +1114,7 @@ class YumBase(depsolve.Depsolve):
                 self._checkUpdatedLeftovers() # Cleanup updated leftovers
                 rescode, restring = self.resolveDeps()
         if rescode != 1:
-            self.verbose_logger.debug(_("Skip-broken took %i rounds "), count)
+            self.verbose_logger.debug("SKIPBROKEN: took %i rounds ", count)
             self.verbose_logger.info(_('\nPackages skipped because of 
dependency problems:'))
             skipped_list = [p for p in skipped_po]
             skipped_list.sort()
@@ -1228,14 +1228,14 @@ class YumBase(depsolve.Depsolve):
                   TS_AVAILABLE  : "available",
                   TS_UPDATED    : "updated"}
 
-        self.verbose_logger.log(logginglevels.DEBUG_2,"TSINFO: Current 
Transaction : %i member(s) " % len(self.tsInfo))
+        self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN: Current 
Transaction : %i member(s) " % len(self.tsInfo))
         for txmbr in sorted(self.tsInfo):
-            msg = "  %-11s : %s " % (state[txmbr.output_state],txmbr.po)
+            msg = "SKIPBROKEN:  %-11s : %s " % 
(state[txmbr.output_state],txmbr.po)
             self.verbose_logger.log(logginglevels.DEBUG_2, msg)
             for po,rel in sorted(txmbr.relatedto):
-                msg = "                   %s : %s" % (rel,po)
+                msg = "SKIPBROKEN:                   %s : %s" % (rel,po)
                 self.verbose_logger.log(logginglevels.DEBUG_2, msg)
-                
+        self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN:%s" % (60 * 
"="))
                                     
     def _getPackagesToRemove(self,po,deptree,toRemove):
         '''
@@ -1246,6 +1246,10 @@ class YumBase(depsolve.Depsolve):
             for pkg in (txmbr.updates + txmbr.obsoletes):
                 toRemove.add(pkg)
                 self._getDepsToRemove(pkg, deptree, toRemove)
+            # Remove related packages    
+            for (relative, relation) in txmbr.relatedto:
+                toRemove.add(relative)
+                self._getDepsToRemove(relative, deptree, toRemove)             
   
         self._getDepsToRemove(po, deptree, toRemove)
 
     def _getDepsToRemove(self,po, deptree, toRemove):
-- 
1.7.3.2

_______________________________________________
Yum-devel mailing list
Yum-devel@lists.baseurl.org
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to