On Fri, 2010-11-05 at 08:26 +0100, Tim Lauridsen wrote:
> ---
>  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):



ACK - I appreciate the better output from skipbroken debug so it's
easier to follow.

thanks
-sv


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

Reply via email to