[Yum-devel] [PATCH 3/3] A solution to the obsoletes but don't provide problem.
James Antill
james at and.org
Mon Jun 18 20:26:32 UTC 2012
---
yum/depsolve.py | 20 ++++++++++++++++++--
1 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 449cf48..aaed2f6 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -485,12 +485,28 @@ class Depsolve(object):
# try to update the requiring package in hopes that all this problem goes away :(
self.verbose_logger.log(logginglevels.DEBUG_2, _('Trying to update %s to resolve dep'), requiringPo)
txmbrs = self.update(po=requiringPo, requiringPo=requiringPo)
+ fixed = False
if not txmbrs:
msg = self._err_missing_requires(requiringPo, requirement)
- self.verbose_logger.log(logginglevels.DEBUG_2, _('No update paths found for %s. Failure!'), requiringPo)
+ self.verbose_logger.log(logginglevels.DEBUG_2, _('No update paths found for %s. Failure due to requirement: %s!'), requiringPo, msg)
+ else:
+ req_lookup = (needname, needflags,
+ rpmUtils.miscutils.stringToVersion(needversion))
+
+ for txmbr in txmbrs:
+ # This works for upgrades, and for obsoletes, on one side.
+ # Also catches upgrades that don't work on the other.
+ if txmbr.ts_state == 'u':
+ if not txmbr.po.checkPrco('requires', req_lookup):
+ fixed = True
+ break
+ if txmbrs and not fixed:
+ msg = self._err_missing_requires(requiringPo, requirement)
+ self.verbose_logger.log(logginglevels.DEBUG_2, _("Update for %s. Doesn't fix requirement: %s!"), requiringPo, msg)
+
+ if not fixed:
return self._requiringFromTransaction(requiringPo, requirement, errorlist)
checkdeps = 1
-
if needmode in ['e']:
self.verbose_logger.log(logginglevels.DEBUG_2, _('TSINFO: %s package requiring %s marked as erase'),
--
1.7.6.5
More information about the Yum-devel
mailing list