I think I've tracked down the root cause of this problem.  It's
actually papered over (coincidentally) in 0.4.10 due to another change,
but thanks to the magic of "hg bisect" I was able to track down the
change that "fixed" it and use that knowledge to trace the bug back to
its origin.

  What was happening was that some pieces of code in aptcache.cc which
modify package states (in particular: cleanup_after_change(), sweep(),
and mark_all_upgradable(), although the latter wasn't involved in this
bug) didn't invoke the callbacks that announce that a package's state
has been changed.  As a result, the resolver's data sturctures were not
reset from the current cache state.  That meant that it ended up with an
outdated list of broken packages.

  Adding pre_package_state_changed() calls in each place that states are
actually modified fixes the problem, although I may just add blanket
calls for each of the routines (the only harm is that the resolver might
be reset unnecessarily, and I think that's less of a problem than this
sort of weirdness).

  Daniel



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to