World update fails with an error message about conflicting USE flags in dev-lang/lazarus. Reproducible: Always Steps to Reproduce: 1. run "emerge --ask --update --newuse @world" Actual Results: emerge fails with the following error message: !!! The ebuild selected to satisfy "dev-lang/lazarus" has unmet requirements. - dev-lang/lazarus-3.4-r1::gentoo USE="gtk gui qt5 qt6 -extras -gtk2" ABI_X86="(64)" The following REQUIRED_USE flag constraints are unsatisfied: gui? ( exactly-one-of ( gtk2 gtk qt5 qt6 ) ) The above constraints are a subset of the following complete expression: gui? ( exactly-one-of ( gtk2 gtk qt5 qt6 ) ) extras? ( gui ) (dependency required by "@selected" [set]) (dependency required by "@world" [argument]) Expected Results: emerge should run successfully I don't know which version of the ebuild causes this error, dev-lang/lazarus-2.0.12 is the installed version. I have not set any USE flags myself.
Created attachment 907015 [details] emerge --info
Ah, the error message reveals the version causing the error: dev-lang/lazarus-3.4-r1
Hello, gui? ( exactly-one-of ( gtk2 gtk qt5 qt6 ) ) means that Lazarus can be build with only one platform from gtk2 qt5 or qt6. gtk which mean gtk3 is not ready, actually. You have to set in package.use only one flag active, for example: dev-lang/lazarus -gtk -gtk2 qt5 -qt6 Anyway, the flags are incomplete. I opened a bug #936828 about that.
(In reply to Cănărău Constantin from comment #3) > Hello, > > gui? ( exactly-one-of ( gtk2 gtk qt5 qt6 ) ) means that Lazarus can be build > with only one platform from gtk2 qt5 or qt6. gtk which mean gtk3 is not > ready, actually. > You have to set in package.use only one flag active, for example: > dev-lang/lazarus -gtk -gtk2 qt5 -qt6 Yes, but why do I have to do that anyway? I didn't have to care about it in earlier versions.
Well, I am not a Gentoo developer to be able to explain the decisions behind and I understand that useflags changes can be annoying. Here is my educated guest: historically, Lazarus was built with gtk2 by default and no others chooses were present. Then, around 2022, gtk2 went EOL so qt5 appear as option, then qt6. Unfortunately, Lazarus is not ready for gtk3. As qt5 and qt6 means a lot of dependencies, neither option became default. So right now there are mandatory decisions to make.
Okay, that makes sense.