As you may be aware, anaconda has some special upgrade magic in the form
of the whiteout list and the upgrade blacklist. The whiteout list helps
us to know where to split dependency loops, and the blacklist helps us
to know which packages should be removed on upgrade. This is mostly due
to packages changing from multilib to not.
Problem is, this information is buried inside anaconda and is not at all
easy to import into other programs. preupgrade in particular would love
to have this knowledge so it can download the same set of packages that
anaconda would. Right now, preupgrade is getting different results
because it just doesn't know what to do in the strange upgrade corner
cases. I'm sure Will or Jeremy can give a specific example.
My solution for this problem is to break the whiteout and upgrade
blacklist into repo metadata files, and then write a pair of yum plugins
to handle interpreting the metadata. Both anaconda and preupgrade can
then make use of these plugins.
Attached is my two yum plugins (the first two I've ever actually
written, so there's bound to be something I missed) and examples of the
two metadata files. Of course we may want to alter the format of the
metadata. These files will need to be maintained by hand in some
version control, similar to comps. We'll also need to make sure they
get written out to repomd.xml.
I have performed minimal testing. I'd like to try them out with
preupgrade, but haven't been able to get to that yet. Anyway, comments?
- Chris