diff --git a/debian/changelog b/debian/changelog index 2be6d812..bb452986 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,8 +12,11 @@ llvm-toolchain-19 (1:19.1.0~++rc3-1~exp2) UNRELEASED; urgency=medium * Disable flang on mips64el (currently not supported). * Don't try to install hwasan_symbolize on x32. * Don't try to install xray and profile headers on x32. + * Fix installation of the shared libllvm and libclang-cpp libraries + under their soname. Closes: #1072200. + * Drop some of the unnecessary libllvm symlinks. - -- Matthias Klose Tue, 27 Aug 2024 11:47:25 +0200 + -- Matthias Klose Fri, 30 Aug 2024 10:38:09 +0200 llvm-toolchain-19 (1:19.1.0~++rc3-1~exp1) experimental; urgency=medium diff --git a/debian/control b/debian/control index 05025ad8..520b55b6 100644 --- a/debian/control +++ b/debian/control @@ -347,6 +347,8 @@ Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same +Breaks: llvm19-dev (<< 1:19.1.0~++rc3-1~exp2) +Replaces: llvm19-dev (<< 1:19.1.0~++rc3-1~exp2) Description: Modular compiler and toolchain technologies, runtime library LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other diff --git a/debian/control.in b/debian/control.in index 8812df58..a78e1ba8 100644 --- a/debian/control.in +++ b/debian/control.in @@ -347,6 +347,8 @@ Section: libs Depends: ${shlibs:Depends}, ${misc:Depends} Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same +Breaks: llvm@LLVM_VERSION@-dev (<< 1:19.1.0~++rc3-1~exp2) +Replaces: llvm@LLVM_VERSION@-dev (<< 1:19.1.0~++rc3-1~exp2) Description: Modular compiler and toolchain technologies, runtime library LLVM is a collection of libraries and tools that make it easy to build compilers, optimizers, just-in-time code generators, and many other diff --git a/debian/libclang-cppX.Y.install.in b/debian/libclang-cppX.Y.install.in index 607ccaa2..25c30797 100644 --- a/debian/libclang-cppX.Y.install.in +++ b/debian/libclang-cppX.Y.install.in @@ -1,2 +1 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ - +usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ /usr/lib/@DEB_HOST_MULTIARCH@/ diff --git a/debian/libclang-cppX.Y.links.in b/debian/libclang-cppX.Y.links.in index ee382f6d..5d0e8f2a 100644 --- a/debian/libclang-cppX.Y.links.in +++ b/debian/libclang-cppX.Y.links.in @@ -1 +1,2 @@ -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@ /usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp.so.@LLVM_VERSION@ +# symlink from the LLVM libdir to the system libdir +usr/lib/@DEB_HOST_MULTIARCH@/libclang-cpp.so.@LLVM_VERSION@.1 usr/lib/llvm-@LLVM_VERSION@/lib/libclang-cpp.so.@LLVM_VERSION@.1 diff --git a/debian/libclang1-X.Y.links.in b/debian/libclang1-X.Y.links.in index 3ec0d6ac..28fa2812 100644 --- a/debian/libclang1-X.Y.links.in +++ b/debian/libclang1-X.Y.links.in @@ -1,6 +1,6 @@ # as upstream -usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.1 usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so.1 + +# FIXME: these are not installed by upstream, there are only libclang-19.so.19, libclang-19.1.0.so, libclang-19.so and libclang.so +usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.1 usr/lib/@DEB_HOST_MULTIARCH@/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.1 -usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.@LLVM_VERSION@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so.1 diff --git a/debian/libllvmX.Y.install.in b/debian/libllvmX.Y.install.in index ce46f373..7100f0b6 100644 --- a/debian/libllvmX.Y.install.in +++ b/debian/libllvmX.Y.install.in @@ -1,3 +1,7 @@ +# install everything in /usr/lib/@DEB_HOST_MULTIARCH@/ + +# this is libLLVM.so.1, renamed to it's soname in the override_dh_install target +usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ /usr/lib/@DEB_HOST_MULTIARCH@/ + +# this is a symlink installed by upstream usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so /usr/lib/@DEB_HOST_MULTIARCH@/ -usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.1 -usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ diff --git a/debian/libllvmX.Y.links.in b/debian/libllvmX.Y.links.in index 067b0884..2c3e5bbd 100644 --- a/debian/libllvmX.Y.links.in +++ b/debian/libllvmX.Y.links.in @@ -1,4 +1,8 @@ -# Should be uncommented for @LLVM_VERSION@.1 and other -# usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so +# provide symlinks in the LLVM subdir +# symlink to the soname in the llvm libdir +usr/lib/@DEB_HOST_MULTIARCH@/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ + +# FIXME: why is this one needed? This already is in the llvm-dev package in the llvm libdir +# create symlink to the symlink installed by upstream +#usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM.so.@LLVM_VERSION@.@LLVM_VERSION_MINOR@ usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so diff --git a/debian/llvm-X.Y-dev.links.in b/debian/llvm-X.Y-dev.links.in index b3a2a2ae..b6e0cfd7 100644 --- a/debian/llvm-X.Y-dev.links.in +++ b/debian/llvm-X.Y-dev.links.in @@ -1,9 +1,3 @@ -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION@.so.1 -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION_FULL@.so.1 -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 usr/lib/llvm-@LLVM_VERSION@/lib/libLLVM-@LLVM_VERSION_FULL@.so -usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION@.so.1 usr/lib/@DEB_HOST_MULTIARCH@/libLLVM-@LLVM_VERSION_FULL@.so.1 - usr/include/llvm-c-@LLVM_VERSION@/llvm-c usr/lib/llvm-@LLVM_VERSION@/include/llvm-c usr/include/llvm-@LLVM_VERSION@/llvm usr/lib/llvm-@LLVM_VERSION@/include/llvm usr/include/llvm-c-@LLVM_VERSION@/llvm-c usr/lib/llvm-@LLVM_VERSION@/build/include/llvm-c diff --git a/debian/rules b/debian/rules index 47de56c6..0279941c 100755 --- a/debian/rules +++ b/debian/rules @@ -1457,6 +1457,18 @@ else endif override_dh_install: + : # fix libLLVM.so.1 install, install it under the SONAME + -ls -l debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM*.so* + test -f debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so.1 + + if [ -f debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so.1 ] && [ ! -h debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so.1 ]; then \ + soname=$$(objdump -p debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so.1 | awk '/ *SONAME / {print $$2}'); \ + rm -f debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/$$soname; \ + mv debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so.1 debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/$$soname; \ + ln -sf $$soname debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so; \ + ln -sf $$soname debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM.so; \ + fi + ifeq (${POLLY_ENABLE},yes) # only for arch:any builds ifneq (,$(filter libpolly-$(LLVM_VERSION)-dev, $(packages)))