Am Donnerstag, den 09.04.2009, 05:25 +0300 schrieb Mart Raudsepp: > Hello, > > > This thread is for any discussion about the slot operator support item > in EAPI-3 draft. > > The premise is good what := and :* allow for, but I'm concerned about > the syntax possibly ending up being suboptimal in relation to the syntax > we come up in the future for covering the cases not covered now. > > > Such cases are for example: > > * A library package has slots 2.4, 2.6 and 2.8. An application works > with either 2.6 or 2.8, but needs a recompile for changed ABI. It does > not work with 2.4 - it has API missing that it needs. DEPEND=RDEPEND=">=cat/lib-2.6:="
> * Same case as previous, but additionally the library has a version with
> slot 3.0 - it is a complete redesign and applications working with 2.8
> have no chance of working. So need to express a list of acceptable SLOTs
> or a minimum and maximum (but slots aren't really guaranteed to be
> numeric and versionable).
slot operators won't help here, so it remains:
RDEPEND="|| ( cat/lib:2.6 cat/lib:2.8 )"
with ranged dependencies:
RDEPEND="cat/lib[>=2.6&<3]:="
or slot ranges:
RDEPEND="cat/lib:[2.6|2.8]="
or
RDEPEND="cat/lib:=[2.6|2.8]"
(depends on how we want to define the syntax)
> * Same case as previous (either of them), but if using SLOT 2.6, it
> needs to be at least >=libr/ary-2.6.5:2.6 and if SLOT 2.8 at least
> >=libr/ary-2.8.3:2.8. A re-compile if switching provider may or may not
> be necessary (considering both cases separately)
slot operators won't help here, so it remains:
RDEPEND="|| ( >=cat/lib-2.8.3:2.8 >=cat/lib-2.6.5:2.6 )"
again with ranged dependencies (somebody please check this):
RDEPEND="cat/lib[<3.0&(>=2.8.3|>=2.6.5)]:="
or
RDEPEND="cat/lib[<3.0&(>=2.8.3|>=2.6.5)]:*"
or maybe combined with slot ranges:
RDEPEND="cat/lib[>=2.8.3|>=2.6.5]:=[2.8|2.6]
please note: the ebuild maintainer has to make sure that the package has
to use the best-matching version, otherwise even the slot specifiers are
worthless.
Real-world example for that:
DEPEND="sys-libs/db:="
RDEPEND="${RDEPEND}"
By the time of installation you have sys-libs/db:{4.6,4.7} installed,
then your app has to use sys-libs/db:4.7.
(best_version should provide that information as far as I know).
>
> * A library provides slots 1.2, 1.4 and 1.6. An application can work
> with all of them, but needs a recompile if upgrading from being linked
> against 1.2 to newer. 1.4 and 1.6 are runtime interchangeable. Very rare
> possibility of this though, involving dlopen and more. Probably
> acceptable to declare rebuild need for all changes.
Yes.
> Are we sure := and :* is the syntax that makes sense once we try to
> cover some of the above with new syntax?
Yes. It's quiet extendable (as seen above).
>
> Perhaps some forward thinking is sensible here to not end up with having
> to deprecate the := and :* syntax soon after its introduction.
Done.
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
