Dear all, In GLEP22[1], reasonable defaults has been introduced to prevent the explosion of keywords. With the growth of Gentoo Prefix, however, a substantial amount of keywords are introduced. Among them, duplex information exists. For example, an ebuild keyworded x86-linux(Gentoo Prefix on x86 linux) will certainly build on x86 (Gentoo vanilla on x86 linux). Furthermore if the ebuild has "amd64" keyword, it will certainly build on amd64-linux too.
This duplication becomes more manifested during the development of Gentoo Prefix on arm. Introducing an arm-linux keyword is objected by developers because we are having too many keywords[2]. But it is far from consensus yet, as people are already adding arm-linux to ebuilds[2]. There were also a proposal to treat arm the same as arm-linux, but received more objections for its vagueness. Therefore we propose the following cartesian product extension to keyword system. a. introducing four more variables, in order, KEYWORDS_ARCH, KEYWORDS_KERNEL, KEYWORDS_USERLAND, KEYWORDS_LIBC. An order relation is defined as arch > kernel > userland > libc b. KEYWORDS_var1 must be defined if KEYWORDS_var2 is defined and var2 < var1. Otherwise it can be omitted. c. KEYWORDS_PROD is defined as cartesian product of KEYWORDS_ARCH, KEYWORDS_KERNEL, KEYWORDS_USERLAND, KEYWORDS_LIBC. Omitted variable is interpreted as empty and not counted in the product. e.g., if KEYWORDS_USERLAND and KEYWORDS_LIBC are not defined, KEYWORDS_PROD is the product of KEYWORDS_ARCH and KEYWORDS_KERNEL. c1. "~" is attached to KEYWORDS_PROD elements if any of its oprand has "~". d. KEYWORDS is redefined as union of KEYWORDS_PROD and KEYWORDS (for backward compatibility) e. reasonable defaults in GLEP22 applys. Therefore, for sys-devel/bison, the keywords proposed will be: KEYWORDS="~hppa-hpux ~m68k-mint ~ppc-aix ~x64-solaris ~x86-interix KEYWORDS_ARCH="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" KEYWORDS_KERNEL="~linux ~solaris ~freebsd ~fbsd ~macos" Problems remaining: a. how to do stablization in this case? b. how to handle things that does not exist? e.g. sparc-macosx? c. how to clean up confusions? e.g. x64-solaris vs amd64-solaris, freebsd (Gentoo Prefix on FreeBSD) vs fbsd (Gentoo/FreeBSD) Thanks, Benda 1. http://www.gentoo.org/proj/en/glep/glep-0022.html 2. see sys-devel/bison, ~alpha ~amd64 ~amd64-fbsd ~amd64-linux ~arm ~arm-linux ~hppa ~hppa-hpux ~ia64 ~ia64-hpux ~ia64-linux ~m68k ~m68k-mint ~mips ~ppc ~ppc-aix ~ppc-macos ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~sparc-solaris ~sparc64-solaris ~x64-freebsd ~x64-macos ~x64-solaris ~x86 ~x86-fbsd ~x86-freebsd ~x86-interix ~x86-linux ~x86-macos ~x86-solaris