WDYT?
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?
WDYT?
I'm hearing more
and more reports of programs being broken through getting multiple LLVM versions in the link chain.
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
On 8 Nov 2021, at 11:18, Michał Górny <mgorny@gentoo.org> wrote:
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.
I think this might just be Blender and friends which are especially fragile.
We may be able to get away with just coordinating those together.
WDYT?
If we can help it, I'd really really prefer we don't. Being able to test various different various of Clang quickly (just like gcc) is really
helpful.
(especially given one day, we might dare to dream of using Clang
for the system toolchain. It becomes a lot easier to check for
regressions if you can just flip the version.)
Best,
sam
On 8 Nov 2021, at 11:18, Michał Górny <mgorny@gentoo.org> wrote:
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.
WDYT?
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?
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 475 |
Nodes: | 16 (2 / 14) |
Uptime: | 17:05:20 |
Calls: | 9,487 |
Calls today: | 6 |
Files: | 13,617 |
Messages: | 6,121,088 |