Hi,
As i mentioned yesterday I saw a bug in the depsolver, where yum
wanted to updated my test package and readline at the sametime
eventhough the new version of test package explicitly required the old
version of readline.
I managed to trace it to the already_seen cache in depsolver.py it
turns out that when resolveDeps has missing requirements and restarts
the depsolving loop the packages that caused that missing requirements
are marked as already seen in the cache and their dependencies not
always resolved again, this causes problems at least in the case of an
upgrade but I can imagine that it could cause other problems as well.
I've included a small patch to fix this, it removes all packages
resulting in missing dependencies from the already seen cache before
starting the next round of depsolving.
Greets,
Gijs
Index: depsolve.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/depsolve.py,v
retrieving revision 1.161
diff -u -r1.161 depsolve.py
--- depsolve.py 19 Apr 2007 07:43:09 -0000 1.161
+++ depsolve.py 19 Apr 2007 17:01:04 -0000
@@ -863,6 +863,17 @@
dep_proc_time = dep_end_time - dep_start_time
self.verbose_logger.log(logginglevels.DEBUG_2, 'processing dep took: %f', dep_proc_time)
+ if missing:
+ # If we have missing requires make sure we process
+ # packages that need them again by removing them
+ # from the already_seen cache instead of blindly
+ # assuming that we already completely resolved their
+ # problems
+ for curpkg in self.dcobj.already_seen.keys():
+ if curpkg.name == needname:
+ 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