On Wed, 28 Oct 2009, James Antill wrote:
checkInstall: Don't filter out requires that we provide, as it's done at createrepo time now. checkRemove: If we have a req. we don't provide, check the things that update/obsolete us for it first.
Why should we be removing this check? 1. lots of old createrepos/yums out there making repodata 2. localinstalls -sv
--- yum/depsolve.py | 22 +++++++++++++++++----- 1 files changed, 17 insertions(+), 5 deletions(-) diff --git a/yum/depsolve.py b/yum/depsolve.py index 4d3d5ca..4c9ebd0 100644 --- a/yum/depsolve.py +++ b/yum/depsolve.py @@ -843,7 +843,6 @@ class Depsolve(object): def _checkInstall(self, txmbr): txmbr_reqs = txmbr.po.returnPrco('requires') - txmbr_provs = set(txmbr.po.returnPrco('provides')) # if this is an update, we should check what the old # requires were to make things faster @@ -856,8 +855,6 @@ class Depsolve(object): for req in sorted(txmbr_reqs, key=self._sort_req_key): if req[0].startswith('rpmlib('): continue - if req in txmbr_provs: - continue if req in oldreqs and self.rpmdb.getProvides(*req): continue @@ -884,7 +881,7 @@ class Depsolve(object): # if this is an update, we should check what the new package # provides to make things faster newpoprovs = {} - for newpo in txmbr.updated_by: + for newpo in txmbr.updated_by + txmbr.obsoleted_by: for p in newpo.provides: newpoprovs[p] = 1 ret = [] @@ -899,7 +896,22 @@ class Depsolve(object): # FIXME: This is probably the best place to fix the postfix rename # problem long term (post .21) ... see compare_providers. for pkg, hits in self.tsInfo.getRequires(*prov).iteritems(): - for rn, rf, rv in hits: + for hit in hits: + # See if the update solves the problem... + found = False + for newpo in txmbr.updated_by: + if newpo.checkPrco('provides', hit): + found = True + break + if found: continue + for newpo in txmbr.obsoleted_by: + if newpo.checkPrco('provides', hit): + found = True + break + if found: continue + + # It doesn't, so see what else might... + rn, rf, rv = hit if not self.tsInfo.getProvides(rn, rf, rv): ret.append( (pkg, self._prco_req_nfv2req(rn, rf, rv)) ) return ret -- 1.6.2.5 _______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel
_______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel