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