Can't come up with a more descriptive title for this one. The issue is this:
There are some global USE flags that allow users to pick alternative
methods of implementing the same thing. For example, packages that offer
a GUI might do so through the "qt" or "gtk" USE flag. Or audio support,
where you can choose "alsa" or "pulseaudio".
Now, if I wanted to, for example, always choose PulseAudio support
instead of ALSA and a Qt GUI instead of a Gtk+ one, one would think that
I could just do:
USE="pulseaudio qt -alsa -gtk"
in my make.conf. But, that doesn't work. That's because some packages
don't offer an alternative at all. Some package might only support ALSA
for audio, and disabling that would lead to the package not offering any
audio output at all. Or it might only offer a Gtk+ GUI, not a Qt one,
and disabling the "gtk" flag will make the package not building its GUI
component at all.
So what's needed here, is a way to tell Portage to only disable a global
USE flag for packages that also offer another one, specified by the
user. Like this pseudo make.conf syntax:
USE="pulseaudio pulseaudio?(-alsa) qt qt?(-gtk)"
Is something like this already possible? Right now, the only way to
painstakingly go through every single package that comes up on an
'USE=use_flags_here emerge -pDN @world' and insert them individually
into package.use.
There should be a proper way of doing this.