EAPI 3 makes IUSE strict: flags not listed in IUSE can't be used in dependency strings, use queries and so on. However, the specification includes ways of implicitly adding things to the effective value of IUSE via the base profile make.defaults. What the specification doesn't say, and what hasn't been formally decided, is what exactly will be implicit.
First up is ARCH. Most people don't seem to want to explicitly list IUSE="x86" etc to make 'use x86' and 'x86? ( ... )' work. Also, people seem to want to continue the existing unprefixed behaviour rather than starting to write 'arch_x86'. So we'll need: USE_EXPAND_UNPREFIXED="ARCH" USE_EXPAND_IMPLICIT="ARCH" In addition, all the implicit values need to be listed. According to arch.list, the values are: USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd arm hppa ia64 m68k \ mips ppc ppc64 s390 sh sparc sparc-fbsd x86 x86-fbsd ppc-aix \ x86-freebsd x64-freebsd ia64-hpux x86-interix mips-irix \ amd64-linux ia64-linux x86-linux ppc-macos x86-macos x64-macos \ m68k-mint x86-netbsd ppc-openbsd x86-openbsd x64-openbsd \ sparc-solaris sparc64-solaris x64-solaris x86-solaris x86-winnt" I've no idea whether that list is accurate. With EAPI 3 it'll matter. Of the normal USE_EXPAND flags, some appear to be routinely listed in IUSE anyway, and some pretty much never are. I'd imagine USERLAND, KERNEL and ELIBC will want to be implicit: USE_EXPAND_IMPLICIT="${USE_EXPAND_IMPLICIT} USERLAND KERNEL ELIBC" And again, the implicit values will have to be listed. According to the desc files (which could be full of lies): USE_EXPAND_VALUES_USERLAND="GNU BSD" USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint linux HPUX \ Interix IRIX NetBSD OpenBSD SunOS" USE_EXPAND_VALUES_ELIBC="AIX Darwin DragonFly FreeBSD glibc HPUX \ Interix IRIX mintlib NetBSD OpenBSD SunOS uclibc" Are there any other USE_EXPANDs that people want implicit behaviour for? If so, which ones, and are the desc files accurate? Finally, there's room to include plain old flags in IUSE automatically. This was added to the specification as a hypothetical "we might want this, and it's easy to specify and implement" rather than a "we'll definitely be using this". Flags that I'm aware of that regularly get abused are: IUSE_IMPLICIT="build debug" Are people wanting to make those implicit? Are there any other flags that people really don't want to put in IUSE? Bear in mind that any flag that's implicit can't ever be used for a use dependency default. -- Ciaran McCreesh
signature.asc
Description: PGP signature