Gentoo Archives: gentoo-dev

From: Ben de Groot <yngwin@g.o>
To: gentoo-dev <gentoo-dev@l.g.o>
Subject: Re: [gentoo-dev] RFC: cartesian product extension to keyword system
Date: Mon, 29 Apr 2013 07:54:09
Message-Id: CAB9SyzTDhmLFJUSf8Xmu8VWCE=MLN7h9+p9fq6fifiG0BbAr4g@mail.gmail.com
In Reply to: [gentoo-dev] RFC: cartesian product extension to keyword system by heroxbd
1 On 29 April 2013 15:14, heroxbd <heroxbd@g.o> wrote:
2 >
3 > Dear all,
4 >
5 > In GLEP22[1], reasonable defaults has been introduced to prevent the
6 > explosion of keywords. With the growth of Gentoo Prefix, however, a
7 > substantial amount of keywords are introduced. Among them, duplex
8 > information exists. For example, an ebuild keyworded x86-linux(Gentoo
9 > Prefix on x86 linux) will certainly build on x86 (Gentoo vanilla on x86
10 > linux). Furthermore if the ebuild has "amd64" keyword, it will certainly
11 > build on amd64-linux too.
12 >
13 > This duplication becomes more manifested during the development of
14 > Gentoo Prefix on arm. Introducing an arm-linux keyword is objected by
15 > developers because we are having too many keywords[2]. But it is far
16 > from consensus yet, as people are already adding arm-linux to
17 > ebuilds[2].
18 >
19 > There were also a proposal to treat arm the same as arm-linux, but
20 > received more objections for its vagueness.
21 >
22 > Therefore we propose the following cartesian product extension to
23 > keyword system.
24 >
25 > a. introducing four more variables, in order, KEYWORDS_ARCH,
26 > KEYWORDS_KERNEL, KEYWORDS_USERLAND, KEYWORDS_LIBC. An order relation
27 > is defined as arch > kernel > userland > libc
28 >
29 > b. KEYWORDS_var1 must be defined if KEYWORDS_var2 is defined and var2 <
30 > var1. Otherwise it can be omitted.
31 >
32 > c. KEYWORDS_PROD is defined as cartesian product of KEYWORDS_ARCH,
33 > KEYWORDS_KERNEL, KEYWORDS_USERLAND, KEYWORDS_LIBC. Omitted variable
34 > is interpreted as empty and not counted in the product. e.g., if
35 > KEYWORDS_USERLAND and KEYWORDS_LIBC are not defined, KEYWORDS_PROD is
36 > the product of KEYWORDS_ARCH and KEYWORDS_KERNEL.
37 >
38 > c1. "~" is attached to KEYWORDS_PROD elements if any of its oprand has "~".
39 >
40 > d. KEYWORDS is redefined as union of KEYWORDS_PROD and KEYWORDS (for
41 > backward compatibility)
42 >
43 > e. reasonable defaults in GLEP22 applys.
44 >
45 > Therefore, for sys-devel/bison, the keywords proposed will be:
46 >
47 > KEYWORDS="~hppa-hpux ~m68k-mint ~ppc-aix ~x64-solaris ~x86-interix
48 >
49 > KEYWORDS_ARCH="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
50 >
51 > KEYWORDS_KERNEL="~linux ~solaris ~freebsd ~fbsd ~macos"
52 >
53 > Problems remaining:
54 >
55 > a. how to do stablization in this case?
56 >
57 > b. how to handle things that does not exist? e.g. sparc-macosx?
58 >
59 > c. how to clean up confusions? e.g. x64-solaris vs amd64-solaris,
60 > freebsd (Gentoo Prefix on FreeBSD) vs fbsd (Gentoo/FreeBSD)
61
62
63 To me this looks to be needlessly complex.
64
65 Cheers,
66
67 Ben | yngwin
68 Gentoo developer
69 Gentoo Qt project lead, Gentoo Wiki admin

Replies