[Rpm-ecosystem] Rich deps syntax finalization

James Antill jantill at redhat.com
Tue Aug 25 16:23:13 UTC 2015

On Tue, 2015-08-25 at 14:11 +0200, Florian Festi wrote:
> Hi!
> I have been visiting Michael Schröder discussing the syntax for the rich
> deps [1]. There are still a few issues we like to get some input from
> the wider community:
> IF Operator
> ===========
> We concluded that the most important question was what to do with the if
> operator. There are two basic variants that can both be used with
> different symbols: forward and backward [2].
> Forward:
> Requires: (langsupport-es ? foo-lang-es)

> With ELSE operand:
> Forward:
> Requires: (pkgB ? pkgA : pkgC)

 Personally I'd prefer these, as it's an actual construct from another
language and uses symbols which aren't going to be in a package. It is
also closer to the "if" operation in rpm macros).

> As I - as a Python programmer - am pretty biased I am very interested if
> programmers knowing only other languages or package maintainers without
> programming skills can relate to this decision.

 This may not be the best list to find that demographic :).

> We discussed whether the operators should be upper or lower case or case
> insensitive. So far we think *upper case* is better as is stands out
> between the typically lower case package names. But we are interested on
> second opinions on this, too.

 Requiring CAPS for the syntax is weird, but is probably the lesser evil
than having people use lowercase in specfiles.

> NOT not?
> ========
> We discussed whether to add a NOT operator. One of the reasons not to
> was that it is pretty awkward if used on the top level:
> Requires: (NOT pkgA)
> which is basically a Conflict
> or even:
> Conflicts: (NOT pkgA)
> which is basically a Requires
> Technically a NOT operator should not be needed. So we are basically
> looking for real life examples where it would be really handy or even a
> pain if it was missing. What would you do with a NOT operator?

 One thing that's confusing here is that it would be easy to assume
"NOT pkgA" means "anything except pkgA" but it actually means "pkgA is
not allowed to be installed".
 Can you include it just in the IF condition?

More information about the Rpm-ecosystem mailing list