Michał Górny <mgo...@gentoo.org> writes:
> [[PGP Signed Part:Undecided]] > Hi, > > TL;DR: Given that (not really surprising) the current approach for LLVM > dependencies doesn't work, I think it's time to give up and introduce > LLVM_TARGETS. This would probably mean introduce llvm-r1.eclass. > > However, since random apps tend to require old versions of LLVM, I do > wonder if we should set the default value globally, or have the eclass > generate IUSE defaults, so that everything works out of the box. > I need to think about this bit. > > The problem roughly is that right now we rely on depstrings like: > > DEPEND=" > <sys-devel/clang-19:= > <sys-devel/llvm-19:= > || ( > ( sys-devel/clang:18 sys-devel/llvm:18 ) > ( sys-devel/clang:17 sys-devel/llvm:17 ) > ( sys-devel/clang:16 sys-devel/llvm:16 ) > ) > " > > This kinda works, in the sense that it will enforce that you have > a single matching version of LLVM+Clang, and the eclass will use it. > However, the := deps on top may be entirely mismatched. For example, if > you have llvm:18 and clang:17 (+ llvm:17) installed, you'd get: > > sys-devel/clang:17= > sys-devel/llvm:18= > > When more packages land on the list, this could lead to quite a mess. > > So what'd we go for would effectively be: > > DEPEND=" > llvm_target_16? ( sys-devel/clang:16 sys-devel/llvm:16 ) > llvm_target_17? ( sys-devel/clang:17 sys-devel/llvm:17 ) > llvm_target_18? ( sys-devel/clang:18 sys-devel/llvm:18 ) > " > > WDYT? We should mention that https://bugs.gentoo.org/923228 was the motivation that tipped us over the edge here. We should also consider the https://bugs.gentoo.org/880671 / https://bugs.gentoo.org/821955 case, as I think this is going to end up solving that too, actually. But yeah, I like it. It solves a request we've had from users for a while ("let me choose") and it solves these silly dep games. Thank you!