The practice of using KEYWORDS="-*" as a sort of
The practice of using KEYWORDS="-*" as a sort of über-mask seems to be getting very common (for instance, many packages that appear to be required to test GCC 4 are keyword-masked this way). emerge seems to have tacitly sanctioned this practice by differentiating between "masked by: missing keyword" and "masked by: -* keyword" in its output. The problem (purpose?) is that there appears to be no way to emerge such a package without altering it or using an overlay - since *no* keyword will allow it, there seems to be nothing that package.keywords can do. I'm finding this surprising, and confusing - it's been years since you had to edit ebuilds or /usr/portage/profiles/package.mask to emerge a package still in testing. A forum search turned up nothing of help here - it seems that everyone who's tinkering with GCC 4 is already comfortable with third-party overlays, which seem like vast overkill. If overlays are meant to be the only way to emerge a keyword-masked package, this seems like a bad idea to me. The Gentoo ebuilds need testing, and if people need to use an overlay to play with GCC 4, they're only using the official ebuilds indirectly; I can't imagine introducing a degree of separation between users and official ebuilds could help with debugging and overall user-developer communication. At any rate, I'm filing this as a bug against the policy doc because it dearly needs to be addressed. The ebuild policy describes two levels of masking - unstable keywords (~arch), for code that mostly works and needs testing by users, and package.mask, for code that doesn't work well yet for many people and should only be used for testing (or with patience :-) ). There is now a third level which is in widespread use in core packages (like GCC). As a user, I'm confused. What does KEYWORDS="-*" mean exactly? Presumably keyword masking is meant to be stronger than ~arch masking, but is it stronger than hard masking? If I can add to /etc/portage/package.{use,keywords} to emerge a masked package, what do I do with a keyword-masked package? If they're really supposed to be impossible to emerge, what are they doing in the official Portage tree? What's wrong with package.mask - why did we need a third level of masking? Perhaps these questions all have simple, reasonable answers, but none of them appear in the policy document, leaving what I view as a gaping hole in the guidelines for package masking. (Am I wrong to expect to find these answers in the official policy docs? Sorry if I'm barking up the wrong tree; I've become frustrated with trying to solve this by looking through the forums (and even the Wiki), and I thought for certain that the official Portage package policy would at least shed some light on the intention of keyword masking.) Reproducible: Always Steps to Reproduce: Actual Results: The ebuild policy is silent on the increasingly pervasive practice of using KEYWORDS="-*" as a masking device. Expected Results: Keyword masking of this kind should be addressed alongside the other types of masking (~arch and package.mask).
/etc/portage/package.keywords lists the keywords that YOUR ARE WILLING to accept for that package. IE: if a package is marked as ~x86 only and you are on ppc, you can add: app-cat/package ~x86 to /etc/portage/package.keywords and portage will let you at it. As similar theory here. gcc is marked -*, so adding sys-devel/gcc -* to /etc/portage/package.keywords will allow you to have it. Be gentle, and good luck ;)
put '-*' into package.keywords and it should emerge fine that said, i dont think the usage of -* vs package.mask needs addressing
Heh?! Wow ... KEYWORDS="-*" means "allow nothing", so if you include "-*" as a keyword, that means "nothing", so it's allowed :-) At any rate, I don't think I'd have ever thought of that; it really should be put somewhere more obvious. Though, come to think of it, it does make sense this way; "~x86" means we're fairly sure it should work okay on x86; "-*" means YMMV (widely) on anything whatsoever. I still would like to see some official mention of this, since it does amount to a form of masking not covered by official policy. (Or maybe I'm just stubborn :-) )
i can update the portage(5) manpage to include an example of using -* but otherwise this is a WONTFIX imo
portage(5) now documents -*