[Yum-devel] [PATCH] Prospective fix for https://bugzilla.redhat.com/show_bug.cgi?id=519172

Seth Vidal skvidal at fedoraproject.org
Tue Sep 8 19:14:43 UTC 2009


If we are running compare_providers() and any of the providers are updates for something installed
then score them up just slightly and make sure to not REMOVE the items which are NOT updates
for something installed. There still should be an obsoletes catch in here - maybe even to make sure
that an obsoleted pkg is never considered AT ALL in compare_providers()

however this makes the bug work out correctly and still has all the unittests working
---
 yum/depsolve.py |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/yum/depsolve.py b/yum/depsolve.py
index d6b1b02..467f657 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -1083,7 +1083,16 @@ class Depsolve(object):
                 # could play a part ... this probably needs a better fix.
                 newest = sorted(rpmdbpkgs)[-1]
                 if newest.verLT(pkg):
-                    ipkgresults[pkg] = 0
+                    # give pkgs which are updates just a SLIGHT edge
+                    # we should also make sure that any pkg
+                    # we are giving an edge to is not obsoleted by
+                    # something else in the transaction. :(
+                    # there are many ways I hate this - this is but one
+                    ipkgresults[pkg] = 5
+            else:
+                # just b/c they're not installed pkgs doesn't mean they should
+                # be ignored entirely. Just not preferred
+                ipkgresults[pkg] = 0
 
         #  This is probably only for "renames". What happens is that pkgA-1 gets
         # obsoleted by pkgB but pkgB requires pkgA-2, now _if_ the pkgA txmbr
-- 
1.6.2.5



More information about the Yum-devel mailing list