In dev-ada/xmlada I had to do: - dev-ada/gprbuild[gnat_2016=,gnat_2017=,gnat_2018=] + dev-ada/gprbuild[gnat_2016?] + dev-ada/gprbuild[gnat_2017?] + dev-ada/gprbuild[gnat_2018?] with gnat_2016 !gnat_2017 !gnat_2018 and without doing this change emerge asked me to use the only dev-ada/gprbuild that has in the IUSE gnat_2018 (dev-ada/gprbuild-2018) Reproducible: Always
This is the intended behavior, you need to use (+) or (-) to indicate whether missing IUSE should behave if if the flag is enabled or disabled. For example, this would indicate that the flag should be considered disabled for packages that have missing IUSE: dev-ada/gprbuild[gnat_2016(-)?] dev-ada/gprbuild[gnat_2017(-)?] dev-ada/gprbuild[gnat_2018(-)?] This is referred to as use-dep-defaults in PMS: https://dev.gentoo.org/~ulm/pms/head/pms.html#x1-790008.2.6.4
Thanks for pointing to that part of the document. That hopefully solve my problem. But why DEPEND="dev-ada/gprbuild[gnat_2016?,gnat_2017?,gnat_2018?]" is different from DEPEND="dev-ada/gprbuild[gnat_2016?] dev-ada/gprbuild[gnat_2017?] dev-ada/gprbuild[gnat_2018?]" It should be the same if I understand correctly but it was the way I previously found to solve it
For DEPEND="dev-ada/gprbuild[gnat_2016?,gnat_2017?,gnat_2018?]" it will not match unless all of the specified use-deps match, but of course you can use (+) and (-) use-dep-defaults to change that. The DEPEND="dev-ada/gprbuild[gnat_2016?] dev-ada/gprbuild[gnat_2017?] dev-ada/gprbuild[gnat_2018?]" thing is clever, and is equivalent to (-) use-dep-defaults.
++