[Rpm-maint] [PATCH v2 3/5] Add common Collection requirements

Panu Matilainen pmatilai at laiskiainen.org
Fri Jun 25 07:29:03 UTC 2010


On Thu, 24 Jun 2010, Panu Matilainen wrote:

> On Thu, 24 Jun 2010, Panu Matilainen wrote:
>> On Thu, 24 Jun 2010, Steve Lawrence wrote:
>>> 
>>> The idea with the Requires(order): sepolicy is that anything that
>>> Provides: sepolicy would be ordered before anything that
>>> Requires(order): sepolicy. So because foo Requires(order): sepolicy, and
>>> bar-policy provides sepolicy, bar-policy would be installed first. So
>>> the order becomes:
>>> 
>>> 1. selinux-policy
>>> 2. foo-policy
>>> 3. bar-policy
>>> 4. foo
>>> 5. bar
>>> 
>>> And everything works with policy, but doesn't change the ordering for
>>> anything else, at least that's the idea.
>> 
>> Right, I see the point now (I had doubts about the interleaved installs but 
>> spelling it out makes it bleeping obvious :) But I dont think that'll work, 
>> as *any* of the packages providing "sepolicy" will satisfy the dependency, 
>> ie once either foo-policy or bar-policy is installed, "sepolicy" is 
>> provided and the other things can proceed.
>> 
>> So ok, this does need some special flag. And I've a feeling some other 
>> collection-uses might need it too. Many of the "update this cache somewhere 
>> within the transaction" cases don't care, but if collections are used for 
>> something that directly affects basic runnability of the applications/tools 
>> then there needs to be a way to tell rpm that the entire collection must 
>> have been installed and executed before the anything depending on the 
>> collection members can be installed. Which is AFAICS the same as the 
>> selinux-case, even if for somewhat different reasons.
>
> In fact... thinking about it some more, I believe the correct default for 
> collection behavior is the one SELinux wants. The cases who don't /require/ 
> that collections are completed before a dependency on packages in a 
> collection can be considered satisfied can flag themselfs as "relaxed" 
> collections (or whatever the terminology ends up being).
>
> A "strict" collection basically looks a whole lot like a strongly connected 
> component in rpm ordering, we'd just like get it without creating artificial 
> loops between the packages belonging to a collection.
> Florian, thoughts?
>
> And then a "relaxed" collection is simply the current dependency ordering.

Hmm. With packages providing collections instead of rpm itself, and 
collection members requiring the provider, we're already at least halfway 
there: we just make RPMSENSE_COLLECTION to show up as isErasePreReq() and 
isInstallPreReq(), to force the collection provider to be installed before 
the collection members. And in case of "strict" collections, make ordering 
add an RPMSENSE_ANY relation from the collection provider to each 
collection member, creating an strongly connected component of the 
collection, which should behave just the way SELinux wants it.
For "relaxed" collections, the provider -> member relation is not added so 
they can be more freely ordered.

Should be fairly trivial even ... or so the theory goes ;)
But now I gotta start packing for the mosquito-feeding trip.

 	- Panu -


More information about the Rpm-maint mailing list