[Rpm-maint] RFC: experiments with rich dependencies

Panu Matilainen pmatilai at redhat.com
Thu Sep 11 13:19:57 UTC 2014

On 09/11/2014 03:51 PM, Michael Schroeder wrote:
> On Thu, Sep 11, 2014 at 03:18:19PM +0300, Panu Matilainen wrote:
>> I did find one "unexpected complication" [*] in the concept in my brief
>> testing, and in all likelihood there are more cases nobody thought of
>> etc... Just like we're still finding uncovered cases with the plain old
>> provide/requires/conflicts/obsoletes handling.
> But you can't break an installed package by installing an unrelated
> package, you should get a conflict. (If that doesn't happen you have
> found a bug.)

Mm, must've accidentally installed the "unrelated" package with system 
rpm instead of the one aware of rich deps, at least I cant reproduce it 
anymore. Apologies for the false alarm.

> The problem with "reverse requires" is that you can add a dependency
> problem by just adding a repository. This can't happen with IF.
>> With rpm 4.12 branched out and new development cycle just starting, this
>> would be the prime time to land in such big new features and AFAICS this
>> would make for a fine starting point for further refining. I'd say go ahead
>> and push this pretty much as-is [**], unless others have objections.
>> Florian?
> Ah, but I was hoping for a discussion of the syntax. Are you ok with
> the enclosing the rich deps with ()? What about the op names, I'd
> love to use & as 'and' and | as 'or' (which also makes it more like
> Debian), but I can't think of any good charater for 'if'.

Enclosing with () seems fine to me. I dunno about the average packager 
but I too would much rather have | and & (or better yet, make that || 
and &&) for 'or' and 'and' ops.

For 'if', perhaps a loosely C-like ? operator would work. For example, 
"A or B" would become "B ? A" which could also be extended to "Requires: 
B ? A : C", as in "if B is installed require A, otherwise require C".

	- Panu -

More information about the Rpm-maint mailing list