[Yum-devel] [PATCH/RFC] Prepare for skipbroken/Replace already_seen
Florian Festi
ffesti at redhat.com
Tue Dec 18 15:29:13 UTC 2007
Florian Festi wrote:
> Hi!
>
> While playing around with the skipbroken code I run into some problems
> when transaction members are removed and the packages is readded later
> on. Reason for this is that __cmp__ and __hash__ methods are overloaded
> in the TransactionMember class. This means that transaction members
> containing pkgs with the same pkgtup are treated as equal. Because of
> this the newly added transaction members are found in the
> already_seen(_removed) dicts if the old "equal" transaction members
> still linger there. A similar problem exists for TsInfo.removedmembers.
>
> The current problem could be worked around by resetting already_seen*
> (as done by Jeremy's patch) and TsInfo.removedmembers (still missing) at
> the begin of the depsolving. But as soon as we try to move the
> skipbroken code deeper into the depsolving loop this will no longer be
> sufficient. Resetting the already_seen information also means restarting
> the depsolving from the start and loosing all the work we already did.
>
> The attached patch works around this two problems by moving to a list
> (set) of transaction members that needs to be checked
> (TsInfo._unresolvedMembers) and keeps it up to date. It also removes the
> no longer needed already_seen* dicts and removedmembers attribute and
> related methods.
>
> The new TsInfo.resetResolved() method feature a hard=False default
> behavior that keeps the already done work if this is better than
> starting from scratch which may be the case after big changes (GUI
> applications come to mind).
>
> I am a bit unsure how this implementation would cope with reinstalls
> (adding install and remove transaction members for the same package) but
> IIRC these are not supported in yum anyway and it is currently not
> possible to do such things even from the yum shell. I also guess that
> some other code pieces would need work to support reinstalls.
>
> So my main questions are:
>
> * Does this look sane?
>
> * Are any of the removed pieces part of the "official" yum API and need
> to stay?
Patch is still pending. Any more comments?
Florian
More information about the Yum-devel
mailing list