[Yum-devel] [PATCH] Solve some of the obsoletes are conflicts mess. testObsoletesOffPostAvail2+

seth vidal skvidal at fedoraproject.org
Thu Sep 29 13:41:03 UTC 2011


On Thu, 2011-09-29 at 09:16 -0400, James Antill wrote:
> On Thu, 2011-09-29 at 00:17 -0400, seth vidal wrote:
> > On Wed, 2011-09-28 at 16:56 -0400, James Antill wrote:
> > > ---
> > >  yum/depsolve.py |   13 +++++++++++++
> > >  1 files changed, 13 insertions(+), 0 deletions(-)
> > > 
> > > diff --git a/yum/depsolve.py b/yum/depsolve.py
> > > index 8fe4952..699a23c 100644
> > > --- a/yum/depsolve.py
> > > +++ b/yum/depsolve.py
> > > @@ -816,6 +816,19 @@ class Depsolve(object):
> > >                      if checkdep:
> > >                          break # The next conflict might be the same pkg
> > >  
> > > +                # check Obsoletes
> > > +                #  Atm. This is _just_ checking for transaction members which
> > > +                # obsolete each other. Because rpm will now auto. obs. those
> > > +                # anyway. We _don't_ check for installed pkgs. which might obs.
> > > +                # something to be installed, even though rpm will also do that.
> > > +                for txmbr in self.tsInfo.getMembersWithState(None, output_states=TS_INSTALL_STATES):
> > > +                    for obs_n in txmbr.po.obsoletes_names:
> > > +                        for otxmbr in self.tsInfo.matchNaevr(name=obs_n):
> > > +                            if otxmbr.output_state not in TS_INSTALL_STATES:
> > > +                                continue
> > > +                            if otxmbr.po.obsoletedBy([txmbr.po]):
> > > +                                self.tsInfo.remove(otxmbr.pkgtup)
> > > +
> > >                  if CheckDeps:
> > >                      if self.dsCallback: self.dsCallback.restartLoop()
> > >                      self.verbose_logger.log(logginglevels.DEBUG_1, _('Restarting Loop'))
> > 
> > 
> > this makes me hurt all over. I'm sure it'll be fine but an installed pkg
> > obsoleting something which is TO be installed sounds like we're doing
> > something wrong.
> 
>  This patch doesn't do that, although my understanding is that rpm does
> that so we need to as well (basically turn all installed obsoletes into
> conflicts).

I know tihs patch doesn't do that - the comment about rpm doing it is
what makes me hurt all over. :)



>  This just says that if you install "foo" and "bar" and "foo" obsoletes
> "bar", then even if obsoletes are off "bar" isn't going to be installed
> so we should remove it from the transaction.


yah yah yah
ack
-sv




More information about the Yum-devel mailing list