On 14 October 2011 21:39, James Antill <ja...@and.org> wrote: > --- > yum/depsolve.py | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > diff --git a/yum/depsolve.py b/yum/depsolve.py > index 699a23c..7e74880 100644 > --- a/yum/depsolve.py > +++ b/yum/depsolve.py > @@ -58,6 +58,9 @@ flags = {"GT": rpm.RPMSENSE_GREATER, > "LE": rpm.RPMSENSE_LESS | rpm.RPMSENSE_EQUAL, > "EQ": rpm.RPMSENSE_EQUAL, > None: 0 } > +_rflags = {} > +for f in flags: > + _rflags[flags[f]] = f > > class Depsolve(object): > """A class for resolving dependencies.""" > @@ -407,9 +410,27 @@ class Depsolve(object): > self.conf.obsoletes = 0 > txmbrs = self.update(po=requiringPo, requiringPo=requiringPo) > self.conf.obsoletes = origobs > - if not txmbrs: > + > + def _check_update_worked(txmbrs, obs=False): > + # Old code assumed that if there was an update, we were > good: > + # if txmbrs: return True > + # ..however we have a problem when foo-1 and foo-2 both > require > + # bar-1, and bar-2 is being installed. If the req. is > identical > + # then we'll skip checking it in _checkInstall(), so we > need to > + # check it here. > + for txmbr in txmbrs: > + if obs or txmbr.name == requiringPo.name: > + n,f,v = requirement > + creq = (n, _rflags[f], > + rpmUtils.miscutils.stringToVersion(v)) > + # If it's identical ... checkInstall will skip it. > + if creq not in txmbr.po.requires: > + return True > + return False > + > + if not _check_update_worked(txmbrs): > txmbrs = self.update(po=requiringPo, > requiringPo=requiringPo) > - if not txmbrs: > + if not _check_update_worked(txmbrs, obs=True): > msg = self._err_missing_requires(requiringPo, > requirement) > self.verbose_logger.log(logginglevels.DEBUG_2, _('No > update paths found for %s. Failure!'), requiringPo) > return self._requiringFromTransaction(requiringPo, > requirement, errorlist) > -- > 1.7.6.4 > > _______________________________________________ > Yum-devel mailing list > Yum-devel@lists.baseurl.org > http://lists.baseurl.org/mailman/listinfo/yum-devel >
ACK
_______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel