Calculating dependencies... done! [nomerge ] app-emulation/winetricks-20190912::gentoo USE="gtk -kde -rar -test" [ebuild R ~] virtual/wine-0-r6::gentoo USE="staging* (-d3d9%)" ABI_X86="32 64" 0 KiB [ebuild N ~] app-emulation/wine-staging-4.17:4.17::gentoo USE="X alsa cups faudio fontconfig gecko gphoto2 gstreamer jpeg lcms mono mp3 ncu$ ses nls openal opengl osmesa perl png pulseaudio realtime run-exes sdl ssl (staging) threads truetype udev udisks vaapi xcomposite xml -capi -cust$ m-cflags -dos -ffmpeg -gsm -gssapi -kerberos -ldap -netapi -odbc -opencl -oss -pcap -pipelight -prelink -samba -scanner -selinux -test -themes -v4$ -vkd3d -vulkan -xinerama" ABI_X86="32 64 -x32" 9 683 KiB [ebuild N ~] app-emulation/wine-vanilla-4.17:4.17::gentoo USE="X alsa cups faudio fontconfig gecko gphoto2 gstreamer jpeg lcms mono mp3 ncu$ ses nls openal opengl osmesa perl png pulseaudio realtime run-exes sdl ssl threads truetype udev udisks xcomposite xml -capi -custom-cflags -dos -$ sm -gssapi -kerberos -ldap -netapi -odbc -opencl -oss -pcap -prelink -samba -scanner -selinux -test -v4l -vkd3d -vulkan -xinerama" ABI_X86="32 64 $ x32" 0 KiB Apparently someone wrongly assumed that Portage will magically select one atom common to all the ||s. Well, it doesn't, so you need one || for every USE flag combination.
I thought 632026 [1] was supposed to fix this, but perhaps I just don't remember about it still being an issue for when emerging with USE="staging", and no other flavours are installed yet. 1. https://bugs.gentoo.org/632026
Layers upon layers of hacks in Portage do not justify using badly written dependencies when you can express the same thing portably.
Isn't there a '||' for each USE combination already, or do you mean, for example, that 'app-emulation/wine-staging[staging]' is one combination, and 'app-emulation/wine-any[staging]' is another? I'm not saying things shouldn't be made better, if indeed there's a way to do so, but I am wondering about the Portage changes, and if they indeed were supposed to change this behaviour or not. I'll CC zmedico to perhaps comment on that. Thanks!
staging? ( || ( app-emulation/wine-staging[staging] app-emulation/wine-any[staging] ) ) ^- this is ok. || ( app-emulation/wine-vanilla[abi_x86_32=,abi_x86_64=] app-emulation/wine-staging[abi_x86_32=,abi_x86_64=] app-emulation/wine-d3d9[abi_x86_32=,abi_x86_64=] app-emulation/wine-any[abi_x86_32=,abi_x86_64=] ) ^- this needs to land in '!staging?'.
(In reply to Chiitoo from comment #3) > I'm not saying things shouldn't be made better, if indeed there's a way to > do so, but I am wondering about the Portage changes, and if they indeed were > supposed to change this behaviour or not. I'll CC zmedico to perhaps > comment on that. AFAIK Portage still handles it well, but since PMS currently does not specify smart behavior for things like this, you can't rely on alternative package managers (like pkgcore) handling it so well.