[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: build profile syntax ideas


Quoting Raphael Hertzog (2013-04-21 21:49:55)
> So I tend to agree with Ian, it would be much more future-proof to have a
> generic syntax instead of introducing another metacharacter.
> (Furthermore the ">" and "<" are already used in many dependencies, so
> it would not really stand out in the dependency line.)
> And we already have wishlist request to extend the expressiveness of
> dependencies so that some dependencies are only considered if a third
> package is installed, this generic scheme could be a way to do it:
> Package: iceweasel
> Depends: [...], iceweasel-gnome [if-installed: gnome]
> So I believe that even if we can't foresee the future, I can easily
> imagine other use cases for such a generic dependency tagging mechanism.

Raphael, your argument is very convincing and I am now even more in favour of
Ian's proposal, thanks! Can you list some of those other use cases you said you
can imagine? Maybe that helps to better decide upon the following:

So if we agree on Ian Jackson's proposal, then there are a few other details
that have to be decided upon. One is between the following two variants:

    Build-Depends: huge (>= 1.0) [i386 arm] [!profile:embedded !profile:stage1], tiny

    Build-Depends: huge (>= 1.0) [i386 arm] [profile: !embedded !stage1], tiny

Both versions were also brought up by Ian Jackson in his initial email. Is
there any technical reason to prefer one over the other? Otherwise, the
advantage of the second is, that it prevents mixing different scopes in one
[...] qualifier and is also a bit shorter (but also more irregular).
Incidentally, the second option was also chosen by Raphael for his
"if-installed" example above, so maybe the second option is the more intuitive

Since this topic is much about being future proof, I also thought about the
choice of the ":" (colon) character to separate the scope from the value in
each label like: "<scope>:<value>". If the colon is used for this purpose, then
it will be hard to depend upon a binary package that was built with a certain
build profile. Currently, the way to depend upon a binary package of a certain
architecture is by using "<packagename>:<architecture>". Using this syntax, the
natural way of depending on a binary package that was built with a certain
profile would be "<packagename>:<profile:stage1>" but there is the problem with
those multiple colons. So maybe another character should be used to separate
scopes from values? Like the dot: "<scope>.<value>". Is this a valid concern?

cheers, josch

Reply to: