On Fri, 2007-06-01 at 10:45 +0300, Panu Matilainen wrote:
> The current depsolver (cvs HEAD, 3.2.0) appears to have a bug when a 
> package which is not part of the transaction set gets it's dependencies 
> broken by an update.
> 
> The case from current rawhide, as I understand it after a brief 
> crash-course into the depsolver code:
> - installed rhpl package depends on libiw.so.28
> - there's an update to wireless tools providing libiw.so.29
> - depsolver notices there's a missing dep initially, notice the miss = 1
>    in the log below, but rhpl doesn't get reprocessed in the restarted loop
>    (because it's not part of the ts ?) 
> -> results in a seemingly succesfull update that breaks installed rhpl's 
> dependencies

Reproduced and I see what's going on.  Basically, we check if needname
is the same as a package in our "already seen, ignore it the next pass"
cache but we don't do the same for provides.  Minimal patch is attached.
Has a bit of a speed hit, though.  Trying to cut that down now.

Jeremy
Index: yum/depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.164
diff -u -u -r1.164 depsolve.py
--- yum/depsolve.py	29 May 2007 15:39:45 -0000	1.164
+++ yum/depsolve.py	4 Jun 2007 19:47:30 -0000
@@ -870,10 +870,14 @@
                     # assuming that we already completely resolved their
                     # problems
                     for curpkg in self.dcobj.already_seen.keys():
-                        if curpkg.name == needname:
+                        prco_flags = rpmUtils.miscutils.flagToString(flags)
+                        prco_ver = rpmUtils.miscutils.stringToVersion(needversion)
+                        prcoformat_need = (needname, prco_flags, prco_ver)
+                        
+                        if curpkg.name == needname or \
+                               curpkg.po.checkPrco('provides', prcoformat_need):
                             del(self.dcobj.already_seen[curpkg])
 
-
                 missingdep += missing
                 conflicts += conflict
                 CheckDeps |= checkdep
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to