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
_______________________________________________
Yum-devel mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/yum-devel

Reply via email to