[Yum-devel] [PATCH][RFC] Add skip-broken to YumBase

Tim Lauridsen tim.lauridsen at googlemail.com
Tue Nov 20 14:19:54 UTC 2007

Florian Festi wrote:
> Hi Tim!
> Having a first look over you patches the following comes to my mind:
> Tim Lauridsen wrote:
>> I have created at patch to add skip-broken functionality to YumBase.
>> I works the following way:
>> 1. I have added some code to the depsolver to store packages with 
>> problems in the self.po_with_problems dict. So we have the po with 
>> problems when the depsolving is completed.
>  * This should be a set. These key:1 dicts are ugly IMHO.

Agree, it should be a set (fixed)

>> 2. I have added a extra 'skip-broken' parameter to 
>> YumBase.buildTransaction to control if we want to skip packages with 
>> problem from the transaction. (default = no)
> May be this should be done by accessing a global config option.

Yes, this is the right way to do it. (fixed)

>> 3. if the skip-broken parameter is True, then we do
>>    While "There is problems"
>>        Remove the packages from the transaction
>>        Depsolve
>  * From my understanding of the architecture of the depsolver the 
> handling of po_with_problems should be done in the process* methods. But 
> that might be my personal taste.

Sounds sane to me, (fixed)

>  * Your patch fails to make sure that the problematic packages are not 
> readded by dependencies. If that happens you run into an endless loop. 
> The right solution would be an excluded_pkgs set that is ignored for all 
> depsolving operations. If pkgs are removed from the transaction they get 
> put into that set. This way we can never get back to the same situation 
> and can not run into an endless loop.

Added some code to clean out the added deps to a package with problems

>  * While your patch tries to keep the impact on the core code minimal 
> (which is a good idea for a first proof of concept implementation) I 
> think we need a deeper integration into the depsolver in the long run. 
> In fact there is no need of an outer loop around the depsolver. It would 
> be enough if the process* methods would just remove the problematic pkg 
> and adds them to the excluded_pkgs set.
Yes, Agree

>  * As your patch works on the packages that have problems and not on the 
> packages that cause the problems there might be interesting side effects.
Yes, this is the problem with trying to solve depsolve problem

foo-2.0 can't update foo-1.0, because bar require foo = 1.0.
So bar is causing the issue, foo-2.0, but i would not be sane to remove
bar. So we used remove foo-2.0 from the transaction, to get on with
other stuff.

>  * Like readding a package (by removing the erase txmbr) that has been 
> updated - resulting in the old and the new packages beeing installed 
> (welcome to the world of multilib file conflicts!)
I am not sure i understand this, please give some example.

>  * Although I added some code to handle removing transaction_members a 
> while ago this code still requires some testing to make sure everything 
> works fine.
>  * There's also still the Depsolver.cheaterlookup. You need to make sure 
> that nothing goes wrong with it (your patch should be ok, but some of 
> the stuff I sketched above might not)
> Florian

Thanks for your comments.

I have added a new patch with some of the changes you suggested.
I have added a new unittest to test it, without needing some special 
crafted rpms.

The patch also fixes some issues where a package is added to transaction 
by the depsolver, but the requering package is not stored in the 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: yum-skip-broken2.patch
Type: text/x-patch
Size: 8097 bytes
Desc: not available
Url : http://lists.baseurl.org/pipermail/yum-devel/attachments/20071120/ed7be1c6/attachment.bin 

More information about the Yum-devel mailing list