I agree that the current state of portage makes it difficult to maintain a mixture of masked and unmasked packages.
Having multiple files such as /etc/portage/package.unmask - /etc/portage/package.mask - as well as the /etc/make.profile/packages, etc. makes it hard to keep track of what is actually taking place. I'd like to see all relevant info in one file, say an entry like
Code: Select all
<media-gfx/sane-backends-1.0.11 --mask
media-sound/alsa-driver --inject
>=media-libs/alsa-lib-0.9.6 --unmask
dev-php/php flash memlimit mysql ldap imap informix curl gd mcal -snmp gd-external innodb
--mask should mask a given build or range thereof;
--unmask should use ACCEPT_KEYWORDS="~x86" (for example)for that particular package-version or greater, allowing one to emerge -UD world and not get errors about masked packages or having to emerge everything else as masked packages. In effect, treating that installed version as a stable build.
--inject should also be allowed to be reproduced in upgrades(new releases inject new package replacing old injected build)
USE flags should also persist across updates for specific packages if explicitly stated in this file.
Finally, apart from having this file to edit, i think it would be good to do this automatically on build time, say with something like:
Code: Select all
STICKY_USE="list of flags" STICKY_ACCEPT_KEYWORDS=~x86 emerge --sticky-inject [package list]