While committing latest emul packages I noticed repoman also warns due undefined USE as follows: $ repoman full RepoMan scours the neighborhood... IUSE.undefined 1 app-emulation/emul-linux-x86-baselibs/emul-linux-x86-baselibs-20110129.ebuild: IUSE is not defined Note: use --include-dev (-d) to check dependencies for 'dev' profiles RepoMan sez: "You're only giving me a partial QA payment? I'll take it this time, but I'm not happy." Even with USE already defined in eclass (and working ok at merge time) Thanks for your help :-) Reproducible: Always
PMS: <quote> 8.2 Mandatory Ebuild-defined Variables All ebuilds must define at least the following variables: [...] IUSE The USE flags used by the ebuild. Any eclass that works with USE flags must also set IUSE, listing only the variables used by that eclass. The package manager is responsible for merging these values. See section 12.1.1 for discussion on which values must be listed this variable. [...] If any of these variables are undefined, or if any of these variables are set to invalid values, the package manager’s behaviour is undefined; ideally, an error in one ebuild should not prevent operations upon other ebuilds or packages. </quote> I think you're required to set IUSE="" in the ebuild, which says "the ebuild doesn't add new use flags to IUSE on top of those defined in eclasses".
But why does I need to specify it even empty in both (ebuild and eclass)? Looks like, for example, binutils ebuilds neither specify it in ebuilds as it's also specified in its eclass :-/
I must confess I dropped IUSE="" from emul ebuilds yesterday for trying the following eclass change locally: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/eclass/emul-linux-x86.eclass?r1=1.5&r2=1.6 When I applied that change to my locally installed eclass, I saw ebuilds where simply not showing new IUSE until I dropped "IUSE=""" entries. But when I have just tried to reproduce the behavior I have seen USE is shown even with IUSE="" :-/ (maybe because I have run emerge --sync)
AFAIK this is a QA team policy, since there's no "technical" reason why IUSE needs to be initialized in the ebuild.
Anything that needs to be done here?
The docs already refer to "style guidelines", so I guess we can mark this as INVALID as long as the style guidelines remain the same.