1 |
Am Montag, 8. November 2021, 12:18:30 CET schrieb Michał Górny: |
2 |
> WDYT? |
3 |
|
4 |
Not a Gentoo dev but a user who develops software. |
5 |
I find it pretty convenient to have multiple LLVM versions available. |
6 |
I'm developing software that links against LLVM and can test it against |
7 |
multiple versions pretty easy with the current setup. I can evaluate a |
8 |
new LLVM version before switching my own software to it. I can even test |
9 |
some old (already bit-rotted) software that needs an old LLVM version since |
10 |
Gentoo provides it. |
11 |
|
12 |
I'm pretty sure that this argument also holds for all users that want to |
13 |
test their software against multiple versions of Clang (just the same as it |
14 |
holds for slotted GCC). |
15 |
|
16 |
To summarize: Slotted LLVM is not only a feature for other distribution |
17 |
packages but also for users of Gentoo that develop software in compiled |
18 |
languages. |
19 |
|
20 |
|
21 |
> I'm hearing more |
22 |
> and more reports of programs being broken through getting multiple LLVM |
23 |
> versions in the link chain. |
24 |
|
25 |
I'm actually experienced this, but slotted LLVM was a solution here not |
26 |
a problem. Let me explain the link chain (an arrow means: "link against"): |
27 |
|
28 |
my tool --> an unpackaged third party lib (bound to an old LLVM) -> LLVM 10 |
29 |
´-> graph-tool -> matplotlib -> Mesa (with AMD graphic card) -> LLVM 12 (system default) |
30 |
|
31 |
So my tool depends on a third party lib which needs LLVM 10 (without an easy port). |
32 |
But as I also have an AMD graphic card so my Mesa is compiled with libLLVM for AMDGPU |
33 |
which loads LLVM 12. My tool uses graph-tool which at the end loads Mesa. |
34 |
As a result my LLVM versions conflicted. |
35 |
|
36 |
My fix was to modify the Mesa ebuild to use LLVM 10 as well. This would |
37 |
have been possible without slotted LLVM, but then I has to use LLVM 10 |
38 |
for everything in my system. I'm also not sure, if this would |
39 |
be possible on any other distribution (without containerizing stuff). |
40 |
(In the meantime the third party lib has updated its code to LLVM 12 so |
41 |
everything is fine again.) |
42 |
|
43 |
Best, |
44 |
Gerion |