[Yum-devel] tsInfoDelta curiosity
Florian Festi
ffesti at redhat.com
Fri Mar 23 14:17:00 UTC 2007
seth vidal wrote:
> On Fri, 2007-03-23 at 03:13 -0400, seth vidal wrote:
>> Hey,
>> I was looking at the tsInfoDelta code that James first added and then
>> at the patch that Florian sent and something worries me. Take the
>> following case from:
>>
>>
>> quux requires bar
>>
>> quux is in a repository
>> bar is installed on the system
>>
>> I run the following yum shell commands:
>>
>> install quux
>> remove bar
>> ts solve
>>
>>
>> 3.1.X will remove bar and install quux leaving quux with a broken dep. -
>> something that I'll work on fixing shortly.
>>
>> 3.0.X will bitch at you and complain that the dep on bar is
>> unresolveable.
>>
>> I'm curious how we will ever be able to handle the above situation
>> without rechecking all pkgs in the transaction on every change to the
>> transaction set.
>> Is there something I'm missing?
> okay, we might be able to scoot around this problem but I'll work on the
> following changes:
>
> 1. make sure that every separate call to resolveDeps resets the
> tsInfoDeltas
> - so that if someone does: install foo; ts solve; remove bar; they
> don't end up not rechecking foo in light of bar being removed
If the delta resolver really works resetting the delta is not needed. You
just have to make sure that really every change gets into the delta.
Removing and formaerly added package again has to be treated as a remove in
the delta.
> 2. we probably need to enhance _checkRemove to make sure it does:
> a. account for any installed pkg requiring anything provided by the
> pkg being removed
This should already be the case.
> b. account for any package_to_be_installed/updated requiring anything
> provided by the pkg being removed
Yes, this is missing and the delta resolving can't work without.
The Depsolver.deps cache is another source of errors as it returns outdated
information.
> - I think it's just an ordering problem right now but I might end up
> with a separate semi-private method like _provideToPkg() but kinda the
> opposite (_requiredDep())
This whole searching looks a bit messy at first sight. May be consistent
interfaces and implementations for all Prcos and different type of package
sacks/piles would be useful. I see no reason why a transaction shouldn't be
seen as a package sack and provide the same search functions as all others.
Moving the search functions to the right places will also make further
optimization easier.
Florian
More information about the Yum-devel
mailing list