Bug#1139451: trixie-pu: package llvm-toolchain-22/1:22.1.7-1~deb13u1
Andres Salomon <[email protected]>
| Newsgroups | gmane.linux.debian.devel.release |
|---|---|
| Message-ID | <10bfa457-bb17-40c7-833c-435525a76588__5215.21094940312$1783294290$gmane$org@queued.net> |
Hi, Emilio suggested uploading now to save a round-trip, so I just uploaded 22.1.8-1~deb13u1 to trixie. I've attached the diff between 22.1.8-1 and 22.1.8-1~deb13u1, though it's really the same as the previous 22.1.7-1~deb13u1. Thanks, Andres On 6/23/26 19:35, Andres Salomon wrote: > On 6/9/26 07:54, Adrian Bunk wrote: >> Control: tags -1 moreinfo >> >> On Tue, Jun 09, 2026 at 03:20:25AM -0400, Andres Salomon wrote: >>> ... >>> [ Impact ] >>> Minimal, as this only impacts packages which intentionally choose to >>> build >>> against llvm-toolchain-22. >>> >>> Note that this version of llvm-toolchain-$VERSION (unlike past versions) >>> builds libc++1, libc++abi1, and llvm-libunwind1 packages *without* >>> the major >>> version in the package name. This could cause problems in future >>> backports >>> of llvm-toolchain-$VERSION, but won't be a problem for trixie since >>> it was >>> released with an older version of llvm-toolchain-19 that included >>> libc++1-19 >>> (and friends). >> >> This is a problem for trixie, where these unversioned packages are built >> from src:llvm-defaults. >> >> # apt-get install starpu-examples/trixie libomp5/sid >> ... >> The following packages have unmet dependencies: >> libomp5 : Conflicts: libomp-x.y >> libomp5-19 : Conflicts: libomp-x.y >> E: Unable to correct problems, you have held broken packages. >> E: The following information from --solver 3.0 may provide additional >> context: >> Unable to satisfy dependencies. Reached two conflicting decisions: >> 1. libomp5-19:amd64 is selected for install because: >> 1. starpu-examples:amd64=1.4.7+dfsg-2 is selected for install >> 2. starpu-examples:amd64=1.4.7+dfsg-2 Depends libomp5-19 (>= >> 0.20130412) >> 2. libomp5-19:amd64 is not selected for install because: >> 1. libomp5:amd64=1:22.1.7-1 is selected for install >> 2. libomp5-19:amd64 Conflicts libomp-x.y >> [selected libomp5:amd64=1:22.1.7-1] >> # >> >> In practice this might mean that when both starpu-examples/trixie and >> libomp5/trixie are installed, then llvm-toolchain-22/1:22.1.7-1~deb13u1 >> in trixie might result in a dist-upgrade removing starpu-examples. > > Thanks! You're right, I didn't look at libomp. For right now, I think > what I'll do is simply drop the unversioned lib packages (libc++1, libc+ > +abi1, llvm-libunwind1, and libomp5) until I come up with a better > solution. Chromium (and rust) can continue statically linking against > the various libraries. > > I'm having the -22 dev packages depend upon -19 libs. Despite having a > stable ABI, this is not really supported; the llvm-toolchain packages > support that kind of thing in the other direction (-22 dev packages can > be made to depend on -23 libs). However, at least for trixie (and > potentially bookworm, but I haven't tested it yet), this will be fine > for rust & chromium since they're building statically against those dev > packages. Simply dropping the library deps in those dev packages results > in llvm build failures, as internally llvm appears to link to them > dynamically, and I didn't feel like spending too long investigating why. > > Please see the attached patch for the updated diff. I tested this by > build chromium (statically) with it on trixie. > > >> >>> ... >>> + * Change build-dep from sid's llvm-spirv-22 to trixie's llvm- >>> spirv-19. >>> ... >> >> I assume that didn't run into #1128822, adding trixie to >> SPIRV_DISABLE_DISTRO >> would be an alternative. > > I didn't hit that, no. Hopefully I don't hit it for bookworm, either! >
llvm-22-4.patch
(text/x-patch, 17 KB)
diff -urN a/debian/changelog b/debian/changelog --- a/debian/changelog 2026-06-18 15:26:30.000000000 +0000 +++ b/debian/changelog 2026-07-05 02:04:11.848443261 +0000 @@ -1,3 +1,22 @@ +llvm-toolchain-22 (1:22.1.8-1~deb13u1) trixie; urgency=medium + + * Non-maintainer upload. + * Rebuild for trixie. + * Change build-dep from sid's llvm-spirv-22 to trixie's llvm-spirv-19. + * Add s390x to g++-multilib build-dep. + * Set SKIP_COMMON_PACKAGES=yes in d/rules to skip building the + non-versioned library packages. Set the NEW_LLVM_VERSION to 19 (instead of + 23; not what the maintainers intended, but it works). + * Regenerate d/control, dropping libc++1, libc++abi1, llvm-libunwind1, and + libomp5 binary packages, and also adding build-deps on trixie's + libc++1-19, libc++abi1-19, libomp5-19, libunwind-19, and libllvm19. + * Add depends for the various -dev packages to those -19 shared lib + packages, but also note in package descriptions that dynamic linking is + unsupported. It *will* fail, as -22-dev headers include symbols that -19 + doesn't have. + + -- Andres Salomon <[email protected]> Sun, 05 Jul 2026 02:04:02 +0000 + llvm-toolchain-22 (1:22.1.8-1) unstable; urgency=medium * New upstream release diff -urN a/debian/control b/debian/control --- a/debian/control 2026-05-06 07:45:48.000000000 +0000 +++ b/debian/control 2026-07-05 02:01:46.892104711 +0000 @@ -8,14 +8,14 @@ chrpath, texinfo, sharutils, libelf-dev, libffi-dev, - lsb-release, patchutils, diffstat, xz-utils, python3-dev, + lsb-release, patchutils, diffstat, xz-utils, python3-dev, libc++1-19, libc++abi1-19, libomp5-19 [amd64 arm64 armhf i386 loong64 mips64el ppc64 ppc64el riscv64 hurd-amd64], libunwind-19, libllvm19, libedit-dev, libncurses-dev, swig, python3-sphinx (>= 1.3.6), binutils-dev, lld [amd64 arm64 armel armhf i386 loong64 ppc64el riscv64 s390x] | hello [amd64 arm64 armel armhf i386 loong64 ppc64el riscv64 s390x], libxml2-dev, libipt-dev [amd64 i386], lcov, procps, help2man, zlib1g-dev, libzstd-dev, - g++-multilib [amd64 i386 mips64 mips64el mipsel powerpc ppc64 sparc sparc64 x32] | hello [amd64 i386 mips64 mips64el mipsel powerpc ppc64 sparc sparc64 x32], + g++-multilib [amd64 i386 mips64 mips64el mipsel powerpc ppc64 s390x sparc sparc64 x32] | hello [amd64 i386 mips64 mips64el mipsel powerpc ppc64 s390x sparc sparc64 x32], libjs-mathjax, python3-myst-parser | python3-recommonmark, python3-pexpect, doxygen, time, dh-exec, dh-python, ocaml-base [amd64 arm64 ppc64el riscv64 s390x] <!pkg.llvm.noocaml> | ocaml-nox [amd64 arm64 ppc64el riscv64 s390x] <!pkg.llvm.noocaml>, ocaml-findlib [amd64 arm64 ppc64el riscv64 s390x] <!pkg.llvm.noocaml>, libctypes-ocaml-dev [amd64 arm64 ppc64el riscv64 s390x] <!pkg.llvm.noocaml>, dh-ocaml [amd64 arm64 ppc64el riscv64 s390x] <!pkg.llvm.noocaml>, @@ -23,7 +23,7 @@ # "| hello" is for older buster/bionic distros without spirv support # We need to keep the constraints coherent between the two alternatives, otherwise # hello would get installed unexpectedly and prevent e.g. wasi-libc from getting pulled - llvm-spirv-22 [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1> | hello [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1>, + llvm-spirv-19 [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1> | hello [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1>, spirv-tools [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1> | hello [amd64 arm64 armhf i386 ppc64 ppc64el riscv64 s390x] <!stage1>, wasi-libc | hello, mingw-w64-common, @@ -650,7 +650,7 @@ Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: amd64 arm64 armhf i386 loong64 mips64el ppc64 ppc64el riscv64 hurd-amd64 -Depends: libomp5 (>= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: libomp5-19, ${shlibs:Depends}, ${misc:Depends} Suggests: libomp-22-doc Breaks: libomp-dev (<< 3.7-1), libomp5 (<< 1:22~++20251023025710+3f47a7be1ae6-1~exp4) Provides: libomp-x.y-dev @@ -660,20 +660,8 @@ The runtime is the part of the OpenMP implementation that your code is linked against, and that manages the multiple threads in an OpenMP program while it is executing. - -Package: libomp5 -Build-Profiles: <!pkg.llvm.noclang> -Architecture: amd64 arm64 armhf i386 loong64 mips64el ppc64 ppc64el riscv64 hurd-amd64 -Multi-Arch: same -Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libomp-x.y -Conflicts: libomp-x.y -Breaks: libomp5-22 -Replaces: libomp5-22, libomp-x.y -Description: LLVM OpenMP runtime - The runtime is the part of the OpenMP implementation that your code is - linked against, and that manages the multiple threads in an OpenMP program - while it is executing. + . + NOTE: dynamic linking is not supported in this backport. Package: libomp-22-doc Build-Profiles: <!pkg.llvm.noclang> @@ -724,36 +712,11 @@ # ------------- libcxx ------------- -Package: libc++1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: amd64 arm64 armel armhf hurd-amd64 hurd-i386 i386 loong64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc sparc64 x32 -Multi-Arch: same -Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} -Suggests: clang -Provides: libc++-x.y -Conflicts: libc++-x.y -Replaces: libc++1-21, libc++-x.y -Breaks: libc++1-21, libc++1-19, libc++abi1-19, libc++1-14, libc++abi1-14 -Description: LLVM C++ Standard library - libc++ is another implementation of the C++ standard library. - . - Features and Goals - . - * Correctness as defined by the C++ standards. - * Fast execution. - * Minimal memory use. - * Fast compile times. - * ABI compatibility with gcc's libstdc++ for some low-level features such - as exception objects, rtti and memory allocation. - * Extensive unit tests. - Package: libc++-22-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: amd64 arm64 armel armhf hurd-amd64 hurd-i386 i386 loong64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc sparc64 x32 -Depends: libc++1 (>= ${binary:Version}), ${misc:Depends}, +Depends: libc++1-19, ${misc:Depends}, libc++abi-22-dev (= ${binary:Version}) Provides: libc++-x.y-dev Conflicts: libc++-x.y-dev @@ -762,6 +725,8 @@ Description: LLVM C++ Standard library (development files) libc++ is another implementation of the C++ standard library . + NOTE: dynamic linking is not supported in this backport. + . Features and Goals . * Correctness as defined by the C++ standards. @@ -798,31 +763,11 @@ # ------------- libcxxabi ------------- -Package: libc++abi1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: amd64 arm64 armel armhf hurd-amd64 hurd-i386 i386 loong64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc sparc64 x32 -Multi-Arch: same -Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libc++abi-x.y -Conflicts: libc++abi-x.y -Replaces: libc++abi1-21, libc++abi-x.y -Breaks: libc++abi1-21, libc++abi1-19, libc++abi1-14 -Description: LLVM low level support for a standard C++ library - libc++abi is another implementation of low level support for a standard C++ - library. - . - Features and Goals - . - * Correctness as defined by the C++ standards. - * Provide a portable sublayer to ease the porting of libc++ - Package: libc++abi-22-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: amd64 arm64 armel armhf hurd-amd64 hurd-i386 i386 loong64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sparc sparc64 x32 -Depends: libc++abi1 (>= ${binary:Version}), ${misc:Depends} +Depends: libc++abi1-19, ${misc:Depends} Breaks: libc++abi-dev (<= 44), libc++abi1 (<< 1:22~++20251023025710+3f47a7be1ae6-1~exp4) Provides: libc++abi-x.y-dev Conflicts: libc++abi-x.y-dev @@ -831,6 +776,8 @@ libc++abi is another implementation of low level support for a standard C++ library. . + NOTE: dynamic linking is not supported in this backport. + . Features and Goals . * Correctness as defined by the C++ standards. @@ -897,33 +844,13 @@ # ------------- libunwind ------------- -Package: llvm-libunwind1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: amd64 arm64 armhf i386 loong64 ppc64 ppc64el riscv64 s390x -Multi-Arch: same -Depends: ${shlibs:Depends}, - ${misc:Depends} -Provides: libunwind-x.y -Breaks: libunwind-21 -Conflicts: libunwind-x.y -Replaces: libunwind-x.y, libunwind-21 -Description: LLVM unwinder, not compatible with glibc - llvm-libunwind is the LLVM unwinder, with platform support for DWARF - unwind info, SjLj, and ARM EHABI. Using it for packaging work inside - Debian is not recommended, incompatible with glibc. - . - The low level libunwind API was designed to work either in-process (aka local) - or to operate on another process (aka remote), but only the local path has - been implemented. Remote unwinding remains as future work. - Package: libunwind-22-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: amd64 arm64 armhf i386 loong64 ppc64 ppc64el riscv64 s390x Depends: ${misc:Depends}, - llvm-libunwind1 (>= ${binary:Version}) + libunwind-19 Provides: libunwind-x.y-dev Conflicts: libunwind-dev, libunwind-x.y-dev Breaks: llvm-libunwind1 (<< 1:22~++20251023025710+3f47a7be1ae6-1~exp4) @@ -933,6 +860,8 @@ unwind info, SjLj, and ARM EHABI. Using it for packaging work inside Debian is not recommended, incompatible with glibc. . + NOTE: dynamic linking is not supported in this backport. + . The low level libunwind API was designed to work either in-process (aka local) or to operate on another process (aka remote), but only the local path has been implemented. Remote unwinding remains as future work. diff -urN a/debian/control.in b/debian/control.in --- a/debian/control.in 2026-05-06 07:14:26.000000000 +0000 +++ b/debian/control.in 2026-07-05 02:01:46.892104711 +0000 @@ -23,7 +23,7 @@ # "| hello" is for older buster/bionic distros without spirv support # We need to keep the constraints coherent between the two alternatives, otherwise # hello would get installed unexpectedly and prevent e.g. wasi-libc from getting pulled - llvm-spirv-22 [@LLVM_SPIRV_ARCHS@] <!stage1>@BEGIN_OPTIONAL_HELLO@ | hello [@LLVM_SPIRV_ARCHS@] <!stage1>@END_OPTIONAL_HELLO@, + llvm-spirv-19 [@LLVM_SPIRV_ARCHS@] <!stage1>@BEGIN_OPTIONAL_HELLO@ | hello [@LLVM_SPIRV_ARCHS@] <!stage1>@END_OPTIONAL_HELLO@, spirv-tools [@LLVM_SPIRV_ARCHS@] <!stage1>@BEGIN_OPTIONAL_HELLO@ | hello [@LLVM_SPIRV_ARCHS@] <!stage1>@END_OPTIONAL_HELLO@, wasi-libc@BEGIN_OPTIONAL_HELLO@ | hello@END_OPTIONAL_HELLO@, mingw-w64-common, @@ -650,7 +650,7 @@ Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: @OMP_ARCHS@ -Depends: libomp5 (>= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: libomp5-19, ${shlibs:Depends}, ${misc:Depends} Suggests: libomp-@LLVM_VERSION@-doc Breaks: libomp-dev (<< 3.7-1), libomp5 (<< @LIBCXX_MOVE_VERSION@) Provides: libomp-x.y-dev @@ -660,20 +660,8 @@ The runtime is the part of the OpenMP implementation that your code is linked against, and that manages the multiple threads in an OpenMP program while it is executing. - -Package: libomp5 -Build-Profiles: <!pkg.llvm.noclang> -Architecture: @OMP_ARCHS@ -Multi-Arch: same -Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libomp-x.y -Conflicts: libomp-x.y -Breaks: libomp5-22 -Replaces: libomp5-22, libomp-x.y -Description: LLVM OpenMP runtime - The runtime is the part of the OpenMP implementation that your code is - linked against, and that manages the multiple threads in an OpenMP program - while it is executing. + . + NOTE: dynamic linking is not supported in this backport. Package: libomp-@LLVM_VERSION@-doc Build-Profiles: <!pkg.llvm.noclang> @@ -724,36 +712,11 @@ # ------------- libcxx ------------- -Package: libc++1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: @ANY_ARCHS@ -Multi-Arch: same -Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} -Suggests: clang -Provides: libc++-x.y -Conflicts: libc++-x.y -Replaces: libc++1-21, libc++-x.y -Breaks: libc++1-21, libc++1-19, libc++abi1-19, libc++1-14, libc++abi1-14 -Description: LLVM C++ Standard library - libc++ is another implementation of the C++ standard library. - . - Features and Goals - . - * Correctness as defined by the C++ standards. - * Fast execution. - * Minimal memory use. - * Fast compile times. - * ABI compatibility with gcc's libstdc++ for some low-level features such - as exception objects, rtti and memory allocation. - * Extensive unit tests. - Package: libc++-@LLVM_VERSION@-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: @ANY_ARCHS@ -Depends: libc++1 (>= ${binary:Version}), ${misc:Depends}, +Depends: libc++1-19, ${misc:Depends}, libc++abi-@LLVM_VERSION@-dev (= ${binary:Version}) Provides: libc++-x.y-dev Conflicts: libc++-x.y-dev @@ -762,6 +725,8 @@ Description: LLVM C++ Standard library (development files) libc++ is another implementation of the C++ standard library . + NOTE: dynamic linking is not supported in this backport. + . Features and Goals . * Correctness as defined by the C++ standards. @@ -798,31 +763,11 @@ # ------------- libcxxabi ------------- -Package: libc++abi1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: @ANY_ARCHS@ -Multi-Arch: same -Pre-Depends: ${misc:Pre-Depends} -Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: libc++abi-x.y -Conflicts: libc++abi-x.y -Replaces: libc++abi1-21, libc++abi-x.y -Breaks: libc++abi1-21, libc++abi1-19, libc++abi1-14 -Description: LLVM low level support for a standard C++ library - libc++abi is another implementation of low level support for a standard C++ - library. - . - Features and Goals - . - * Correctness as defined by the C++ standards. - * Provide a portable sublayer to ease the porting of libc++ - Package: libc++abi-@LLVM_VERSION@-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: @ANY_ARCHS@ -Depends: libc++abi1 (>= ${binary:Version}), ${misc:Depends} +Depends: libc++abi1-19, ${misc:Depends} Breaks: libc++abi-dev (<= 44), libc++abi1 (<< @LIBCXX_MOVE_VERSION@) Provides: libc++abi-x.y-dev Conflicts: libc++abi-x.y-dev @@ -831,6 +776,8 @@ libc++abi is another implementation of low level support for a standard C++ library. . + NOTE: dynamic linking is not supported in this backport. + . Features and Goals . * Correctness as defined by the C++ standards. @@ -897,33 +844,13 @@ # ------------- libunwind ------------- -Package: llvm-libunwind1 -Build-Profiles: <!pkg.llvm.noclang> -Section: libs -Architecture: @LIBUNWIND_ARCHS@ -Multi-Arch: same -Depends: ${shlibs:Depends}, - ${misc:Depends} -Provides: libunwind-x.y -Breaks: libunwind-21 -Conflicts: libunwind-x.y -Replaces: libunwind-x.y, libunwind-21 -Description: LLVM unwinder, not compatible with glibc - llvm-libunwind is the LLVM unwinder, with platform support for DWARF - unwind info, SjLj, and ARM EHABI. Using it for packaging work inside - Debian is not recommended, incompatible with glibc. - . - The low level libunwind API was designed to work either in-process (aka local) - or to operate on another process (aka remote), but only the local path has - been implemented. Remote unwinding remains as future work. - Package: libunwind-@LLVM_VERSION@-dev Build-Profiles: <!pkg.llvm.noclang> Section: libdevel Architecture: @LIBUNWIND_ARCHS@ Depends: ${misc:Depends}, - llvm-libunwind1 (>= ${binary:Version}) + libunwind-19 Provides: libunwind-x.y-dev Conflicts: libunwind-dev, libunwind-x.y-dev Breaks: llvm-libunwind1 (<< @LIBCXX_MOVE_VERSION@) @@ -933,6 +860,8 @@ unwind info, SjLj, and ARM EHABI. Using it for packaging work inside Debian is not recommended, incompatible with glibc. . + NOTE: dynamic linking is not supported in this backport. + . The low level libunwind API was designed to work either in-process (aka local) or to operate on another process (aka remote), but only the local path has been implemented. Remote unwinding remains as future work. diff -urN a/debian/rules b/debian/rules --- a/debian/rules 2026-06-18 15:23:32.000000000 +0000 +++ b/debian/rules 2026-07-05 02:01:46.892104711 +0000 @@ -186,12 +186,12 @@ endif endif # set these two when building without the common packages -#SKIP_COMMON_PACKAGES = yes -#NEW_LLVM_VERSION = 23 +SKIP_COMMON_PACKAGES = yes +NEW_LLVM_VERSION = 19 ifeq ($(SKIP_COMMON_PACKAGES),yes) COMMON_PKGS := $(shell cat debian/packages.common) - COMMON_BUILD_DEPS = $(foreach p,$(COMMON_PKGS),$(p)$(COMMA)) + COMMON_BUILD_DEPS = $(subst llvm-libunwind1,libunwind,$(foreach p,$(COMMON_PKGS),$(p)-$(NEW_LLVM_VERSION)$(COMMA))) # make sure the common packages exist for the new LLVM version NEXT_LIBLLVM_PKG = libllvm$(NEW_LLVM_VERSION), endif @@ -717,7 +717,7 @@ STAGE_ALL_CMAKE_EXTRA += -DLIBOMP_LIBFLAGS="-lm" endif ifeq ($(SKIP_COMMON_PACKAGES),yes) - COMMON_BUILD_DEPS := $(subst libomp5,libomp5 [$(OMP_ARCHS)],$(COMMON_BUILD_DEPS)) + COMMON_BUILD_DEPS := $(subst libomp5-19,libomp5-19 [$(OMP_ARCHS)],$(COMMON_BUILD_DEPS)) endif # Enable offloading (or not)