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.


Reply via email to