Bug#1089933: llvm-toolchain-19: allow multiple version of libc++* and libunwind* to be installed at the same time

Andres Salomon dilinger at queued.net
Sun Apr 6 22:53:55 BST 2025


On Sat, 14 Dec 2024 15:28:36 -0500 Andres Salomon <dilinger at queued.net> 
wrote:
[...]
> 
> Ideally, libunwind-16 and libunwind-19 can be installed in parallel. 
> Likewise, libc++1-16 and libc++1-19. Since llvm 16 is being dropped from 
> sid/trixie, it would be good to get this fixed in llvm 19 and also 
> future major versions. We've already worked around the 16 -> 19 upgrade 
> issue for chromium by switching to (temporarily?) linking against libstdc++.


Chromium upstream is no longer allowing libstdc++ linkage after chromium 
138, so this has now become a priority.

> 
> Proposal:
> 
> Assuming that newer versions of libc++* and libunwind-* symbols are 
> backwards compatible with older versions, it would be nice to rename the 
> packages based on their SONAMEs. For example, libc++1-19 becomes libc++1 
> (with libc++1 binary package being removed from the llvm-defaults source 
> package), and when a package builds against libc++-dev the resulting 
> binary package gets a dep of (libc++1 >= 1:19.1.5). That way, if some 
> other package links against libc++* from llvm20 while chromium links 
> against libc++* from llvm19, both packages can use libc++* from llvm20.

I've decided against this scheme because it requires coordination with 
the llvm-defaults package, and because it wouldn't allow packages to 
link against specific versions of libc++ if needed. So instead, like 
libclang1 and its friends, I'm leaning towards embedding @LLVM_VERSION@ 
in the SONAME.

I'm not sure why libclang1-20 is using an SONAME of "libclang-20.so.20", 
while libllvm20's SONAME is "libLLVM.so.20.1", but for libc++1-20 I'm 
leaning towards doing something like "libc++-20.so.1". Does that make 
sense? Or would you prefer libc++-20.so.20? I would also be changing the 
SONAMEs for the libc++abi1-20 and libunwind-20 packages.

Since trixie is frozen for transitions and llvm-toolchain-20 is still 
only in experimental, I plan to start by targeting -20 to minimize any 
kind of breakage from packages that might have already built against 
libc++. Once that's complete, I'll coordinate with the SRMs, and firefox 
& rust folks to update the bookworm llvm-toolchain-19 package to use the 
new SONAME (I don't think any of them are dynamically linking against 
it, but just in case). Trixie will require a separate release-team 
discussion.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-llvm-team/attachments/20250406/eef4d6f4/attachment.sig>


More information about the Pkg-llvm-team mailing list