Hi, A few years back I've slotted LLVM and Clang to make the life with revdeps easier. Long story short, every major LLVM release (which happens twice a year) breaks API and it takes some time for revdeps to adjust. Slotting made it possible to install multiple versions simultaneously, and therefore let "faster" packages use newer LLVM without being blocked by "slower" packages on the user's system.
Unfortunately, this ended up pretty bothersome to maintain. Besides making ebuilds quite complex (and prone to mistakes), I'm hearing more and more reports of programs being broken through getting multiple LLVM versions in the link chain. This is not something that can be easily solved. In other words, it's a mess and I don't think we're really getting anywhere. For this reason, I'm considering dropping slotting and going back to permitting only a single version of LLVM and Clang being installed. This would have two major implications: 1. If you installed any package that requires older LLVM, it'd block all other packages from updating. If you hit two packages that do not have a common supported LLVM version, you won't be able to install them at all. On the plus side, this will motivate developers to actually start fixing these packages rather than letting them rot until I start removing old LLVM versions. 2. We will no longer support having multiple clang versions installed. While it was convenient for testing stuff, it's not really a killer feature though. The only real alternative I see is actively limiting supported LLVM versions in packages to ensure that all libraries in the depgraph end up using the same LLVM version. However, I don't think it's really worth the effort. I don't have a ready unslotting plan yet. WDYT? -- Best regards, Michał Górny
