diff --git a/debian/changelog b/debian/changelog index 67a496ce..99a785d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -213,7 +213,40 @@ llvm-toolchain-snapshot (1:16~++20220731055325+02b3a358926e-1~exp1) experimental -- Sylvestre Ledru Wed, 27 Jul 2022 21:36:27 +0200 -llvm-toolchain-15 (1:15.0.7-4) UNRELEASED; urgency=medium +llvm-toolchain-15 (1:15.0.7-5) unstable; urgency=medium + + [ Graham Inggs ] + * debian/patches/ubuntu-releases.patch: Update the list of + Ubuntu release names + + [ Gianfranco Costamagna ] + * Add powerpc to GOLD architectures + * Cherry-pick upstream fix for newer cmake-related build failure + * Cherry-pick upstream fix for HIP search path depending on os-release (Closes: #1037452) + + [ Steve Langasek ] + * debian/rules: disable -Wl,-Bsymbolic-functions for libomp. LP: #2016471. + + -- Gianfranco Costamagna Sat, 24 Jun 2023 20:04:59 +0200 + +llvm-toolchain-15 (1:15.0.7-5~exp2) experimental; urgency=medium + + * Also apply the workround of issue #62621 for focal + and to include libpolly-15-dev + + -- Sylvestre Ledru Sat, 10 Jun 2023 11:52:14 +0200 + +llvm-toolchain-15 (1:15.0.7-5~exp1) experimental; urgency=medium + + * Remove old code to manage Debian stretch + * Force the replacement of new Ubuntu packages introduced in + https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-15/+bug/2008755 + * Adjust LIBCXXABI_ARM_EHABI => _LIBCXXABI_ARM_EHABI + Issue: https://github.com/llvm/llvm-project/issues/59240 + + -- Sylvestre Ledru Sun, 04 Jun 2023 11:35:54 +0200 + +llvm-toolchain-15 (1:15.0.7-4) unstable; urgency=medium * Fix debian/libclang1-15.symbols soname * Remove build artifacts if any @@ -228,12 +261,6 @@ llvm-toolchain-15 (1:15.0.7-3) unstable; urgency=medium llvm-toolchain-15 (1:15.0.7-2) unstable; urgency=medium - * Adjust some lintian overrides - * Disable flang on s390x. Seems that it is breaking - - [ Gianfranco Costamagna ] - * Update print lldb python patch, following what was done - in automake for newer python [ Sylvestre Ledru ] * Yeah, we would like to have this version in bookworm (Closes: #1032316) @@ -243,31 +270,6 @@ llvm-toolchain-15 (1:15.0.7-2) unstable; urgency=medium [ Gianfranco Costamagna ] * Update print lldb python patch, following what was done in automake for newer python - [ Sylvestre Ledru ] - * Yeah, we would like to have this version in bookworm - (Closes: #1032316) - * Adjust some lintian overrides - * Disable flang on s390x. Seems that it is breaking - - [ Gianfranco Costamagna ] - * Update print lldb python patch, following what was done - in automake for newer python - - [ Samuel Thibault ] - * Fix disabling amdgpu on non-Linux. - - [ John Paul Adrian Glaubitz ] - * Don't run chrpath for libclang on powerpc and powerpcspe - - [ Faidon Liambotis ] - * Update the wasm-sysroot-usr.diff patch to restore functionality that was - accidentally dropped when the patch was forward-ported from 14 to 15. This - resolves an issue in which clang++ builds would fail if libc++-15-dev was - installed alongside libc++-15-dev-wasm32. (Closes: #1029010, #1032317) - - [ Cordell Bloor ] - * Backport support for HIP in /usr and add Debian paths - for rocm-device-libs to search list (Closes: #1031808) [ Samuel Thibault ] * Fix disabling amdgpu on non-Linux. @@ -404,10 +406,8 @@ llvm-toolchain-15 (1:15.0.5-1) unstable; urgency=medium * New upstream release * Remove the swig patches (applied upstream) - * experimental New snapshot release - * experimental New snapshot release - -- Sylvestre Ledru Wed, 16 Nov 2022 09:02:30 +0100 + -- Sylvestre Ledru Wed, 16 Nov 2022 09:11:01 +0100 llvm-toolchain-15 (1:15.0.4-1) unstable; urgency=medium @@ -550,7 +550,7 @@ llvm-toolchain-15 (1:15.0.0-1~exp1) experimental; urgency=medium llvm-toolchain-15 (1:15.0.0~+rc3-1~exp2) experimental; urgency=medium * Update of the build dep from llvm-spirv => llvm-spirv-14 - as it is now versionned. It should build libclc + as it is now versioned. It should build libclc -- Sylvestre Ledru Wed, 31 Aug 2022 17:10:33 +0200 diff --git a/debian/patches/HIP-search-path-fix.patch b/debian/patches/HIP-search-path-fix.patch new file mode 100644 index 00000000..fc02be4c --- /dev/null +++ b/debian/patches/HIP-search-path-fix.patch @@ -0,0 +1,45 @@ +From f8598357662dc8dd0f4400bcaeb48e8befe43ecc Mon Sep 17 00:00:00 2001 +From: Cordell Bloor +Date: Tue, 9 May 2023 09:46:48 -0400 +Subject: [PATCH] [HIP] Detect HIP for Ubuntu, Mint, Gentoo, etc. + +HIP may be installed into /usr or /usr/local on a variety of Linux +operating systems. It may become unwieldy to list them all. + +Reviewed by: Siu Chi Chan, Yaxun Liu + +Differential Revision: https://reviews.llvm.org/D149110 +--- + clang/lib/Driver/ToolChains/AMDGPU.cpp | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp +index acedcfabefe1c..1eb22ed8704c9 100644 +--- a/clang/lib/Driver/ToolChains/AMDGPU.cpp ++++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp +@@ -10,7 +10,6 @@ + #include "CommonArgs.h" + #include "clang/Basic/TargetID.h" + #include "clang/Driver/Compilation.h" +-#include "clang/Driver/Distro.h" + #include "clang/Driver/DriverDiagnostic.h" + #include "clang/Driver/InputInfo.h" + #include "clang/Driver/Options.h" +@@ -309,13 +308,10 @@ RocmInstallationDetector::getInstallationPathCandidates() { + ROCmSearchDirs.emplace_back(D.SysRoot + "/opt/" + LatestROCm, + /*StrictChecking=*/true); + +- Distro Dist(D.getVFS(), llvm::Triple(llvm::sys::getProcessTriple())); +- if (Dist.IsDebian() || Dist.IsRedhat()) { +- ROCmSearchDirs.emplace_back(D.SysRoot + "/usr/local", +- /*StrictChecking=*/true); +- ROCmSearchDirs.emplace_back(D.SysRoot + "/usr", +- /*StrictChecking=*/true); +- } ++ ROCmSearchDirs.emplace_back(D.SysRoot + "/usr/local", ++ /*StrictChecking=*/true); ++ ROCmSearchDirs.emplace_back(D.SysRoot + "/usr", ++ /*StrictChecking=*/true); + + DoPrintROCmSearchDirs(); + return ROCmSearchDirs; diff --git a/debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch b/debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch index fa5d859c..23351802 100644 --- a/debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch +++ b/debian/patches/libcxx/libcxxabi-arm-ehabi-fix.patch @@ -16,7 +16,7 @@ Index: llvm-toolchain-snapshot_16~++20220920091612+a7d2409bac7f/libcxxabi/src/cx #ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException(&exception_header->unwindHeader); -#else -+#elif !LIBCXXABI_ARM_EHABI ++#elif !_LIBCXXABI_ARM_EHABI _Unwind_RaiseException(&exception_header->unwindHeader); +#else + _Unwind_RaiseException(exception_header->unwindHeader); @@ -34,7 +34,7 @@ Index: llvm-toolchain-snapshot_16~++20220920091612+a7d2409bac7f/libcxxabi/src/cx // to touch a foreign exception in any way, that is undefined // behavior. They likely can't since the only way to catch // a foreign exception is with catch (...)! -+#if !LIBCXXABI_ARM_EHABI ++#if !_LIBCXXABI_ARM_EHABI _Unwind_DeleteException(&globals->caughtExceptions->unwindHeader); +#else + _Unwind_DeleteException(globals->caughtExceptions->unwindHeader); @@ -47,7 +47,7 @@ Index: llvm-toolchain-snapshot_16~++20220920091612+a7d2409bac7f/libcxxabi/src/cx #ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException(&exception_header->unwindHeader); -#else -+#elif !LIBCXXABI_ARM_EHABI ++#elif !_LIBCXXABI_ARM_EHABI _Unwind_RaiseException(&exception_header->unwindHeader); +#else + _Unwind_RaiseException(exception_header->unwindHeader); @@ -58,7 +58,7 @@ Index: llvm-toolchain-snapshot_16~++20220920091612+a7d2409bac7f/libcxxabi/src/cx dep_exception_header->unwindHeader.exception_cleanup = dependent_exception_cleanup; #ifdef __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader); -+#elif !LIBCXXABI_ARM_EHABI ++#elif !_LIBCXXABI_ARM_EHABI + _Unwind_RaiseException(&dep_exception_header->unwindHeader); #else - _Unwind_RaiseException(&dep_exception_header->unwindHeader); @@ -74,7 +74,7 @@ Index: llvm-toolchain-snapshot_16~++20220920091612+a7d2409bac7f/libcxxabi/src/cx _LIBCXXABI_HIDDEN void __setExceptionClass ( _Unwind_Exception*, uint64_t); _LIBCXXABI_HIDDEN bool __isOurExceptionClass(const _Unwind_Exception*); -+#if LIBCXXABI_ARM_EHABI ++#if _LIBCXXABI_ARM_EHABI +// GCC has _Unwind_Control_Block in unwind.h (unwind_arm_common.h) +#if defined(__clang__) +struct _Unwind_Control_Block diff --git a/debian/patches/new-cmake-build-fix.patch b/debian/patches/new-cmake-build-fix.patch new file mode 100644 index 00000000..f0d84224 --- /dev/null +++ b/debian/patches/new-cmake-build-fix.patch @@ -0,0 +1,148 @@ +From 61967bbc7d4e9f72fb1fa082fa2235b99e36b698 Mon Sep 17 00:00:00 2001 +From: Nikita Popov +Date: Thu, 20 Apr 2023 14:59:27 +0200 +Subject: [PATCH] [OpenMP] Replace libomp_check_linker_flag with + llvm_check_compiler_linker_flag + +Replace the custom libomp_check_linker_flag() implementation with +llvm_check_compiler_linker_flag() from the common cmake utils. Due +to the way the custom implementation is implemented (capturing +output from an entire nested cmake invocation) it can easily end +up incorrectly detecting flags as unavailable, e.g. because "error", +"unknown" or similar occurs inside compiler flags, the directory +name, etc. + +Fixes https://github.com/llvm/llvm-project/issues/62240. + +Differential Revision: https://reviews.llvm.org/D148798 +--- + .../runtime/cmake/LibompCheckLinkerFlag.cmake | 72 ------------------- + openmp/runtime/cmake/config-ix.cmake | 18 ++--- + 2 files changed, 9 insertions(+), 81 deletions(-) + delete mode 100644 openmp/runtime/cmake/LibompCheckLinkerFlag.cmake + +diff --git a/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake b/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake +deleted file mode 100644 +index bcc0ca80c866e..0000000000000 +--- a/openmp/runtime/cmake/LibompCheckLinkerFlag.cmake ++++ /dev/null +@@ -1,72 +0,0 @@ +-# +-#//===----------------------------------------------------------------------===// +-#// +-#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +-#// See https://llvm.org/LICENSE.txt for license information. +-#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +-#// +-#//===----------------------------------------------------------------------===// +-# +- +-include(GNUInstallDirs) +- +-# Checking a linker flag to build a shared library +-# There is no real trivial way to do this in CMake, so we implement it here +-# this will have ${boolean} = TRUE if the flag succeeds, otherwise FALSE. +-function(libomp_check_linker_flag flag boolean) +- if(NOT DEFINED "${boolean}") +- set(retval TRUE) +- set(library_source +- "int foo(int a) { return a*a; }") +- set(cmake_source +- "cmake_minimum_required(VERSION 3.13.4) +- project(foo C) +- set(CMAKE_SHARED_LINKER_FLAGS \"${flag}\") +- add_library(foo SHARED src_to_link.c)") +- # Compiling as a part of runtimes introduces ARCH-unknown-linux-gnu as a part +- # of a working directory. So adding a guard for unknown. +- set(failed_regexes "[Ee]rror;[Uu]nknown[^-];[Ss]kipping;LINK : warning;Unsupported command line") +- set(base_dir ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/link_flag_check_${boolean}) +- file(MAKE_DIRECTORY ${base_dir}) +- file(MAKE_DIRECTORY ${base_dir}/build) +- file(WRITE ${base_dir}/src_to_link.c "${library_source}") +- file(WRITE ${base_dir}/CMakeLists.txt "${cmake_source}") +- +- message(STATUS "Performing Test ${boolean}") +- try_compile( +- try_compile_result +- ${base_dir}/build +- ${base_dir} +- foo +- OUTPUT_VARIABLE OUTPUT) +- +- if(try_compile_result) +- foreach(regex IN LISTS failed_regexes) +- # Ignore the warning about the newer or unknown CUDA version. +- if(("${OUTPUT}" MATCHES ${regex}) AND NOT ("${OUTPUT}" MATCHES "Unknown CUDA version")) +- set(retval FALSE) +- endif() +- endforeach() +- else() +- set(retval FALSE) +- endif() +- +- if(${retval}) +- set(${boolean} 1 CACHE INTERNAL "Test ${boolean}") +- message(STATUS "Performing Test ${boolean} - Success") +- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log +- "Performing C Linker Flag test ${boolean} succeeded with the following output:\n" +- "${OUTPUT}\n" +- "Source file was:\n${library_source}\n") +- else() +- set(${boolean} "" CACHE INTERNAL "Test ${boolean}") +- message(STATUS "Performing Test ${boolean} - Failed") +- file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log +- "Performing C Linker Flag test ${boolean} failed with the following output:\n" +- "${OUTPUT}\n" +- "Source file was:\n${library_source}\n") +- endif() +- +- set(${boolean} ${retval} PARENT_SCOPE) +- endif() +-endfunction() +diff --git a/openmp/runtime/cmake/config-ix.cmake b/openmp/runtime/cmake/config-ix.cmake +index d0eda6d8ca39a..ca3cb43c285db 100644 +--- a/openmp/runtime/cmake/config-ix.cmake ++++ b/openmp/runtime/cmake/config-ix.cmake +@@ -16,8 +16,8 @@ include(CheckIncludeFile) + include(CheckLibraryExists) + include(CheckIncludeFiles) + include(CheckSymbolExists) +-include(LibompCheckLinkerFlag) + include(LibompCheckFortranFlag) ++include(LLVMCheckCompilerLinkerFlag) + + # Check for versioned symbols + function(libomp_check_version_symbols retval) +@@ -128,14 +128,14 @@ check_symbol_exists(_aligned_malloc "mal + + # Check linker flags + if(WIN32) +- libomp_check_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG) ++ llvm_check_compiler_linker_flag(/SAFESEH LIBOMP_HAVE_SAFESEH_FLAG) + elseif(NOT APPLE) +- libomp_check_linker_flag(-Wl,-x LIBOMP_HAVE_X_FLAG) +- libomp_check_linker_flag(-Wl,--warn-shared-textrel LIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG) +- libomp_check_linker_flag(-Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG) +- libomp_check_linker_flag("-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG) +- libomp_check_linker_flag(-static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG) +- libomp_check_linker_flag(-Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG) ++ llvm_check_compiler_linker_flag(C -Wl,-x LIBOMP_HAVE_X_FLAG) ++ llvm_check_compiler_linker_flag(C -Wl,--warn-shared-textrel LIBOMP_HAVE_WARN_SHARED_TEXTREL_FLAG) ++ llvm_check_compiler_linker_flag(C -Wl,--as-needed LIBOMP_HAVE_AS_NEEDED_FLAG) ++ llvm_check_compiler_linker_flag(C "-Wl,--version-script=${LIBOMP_SRC_DIR}/exports_so.txt" LIBOMP_HAVE_VERSION_SCRIPT_FLAG) ++ llvm_check_compiler_linker_flag(C -static-libgcc LIBOMP_HAVE_STATIC_LIBGCC_FLAG) ++ llvm_check_compiler_linker_flag(C -Wl,-z,noexecstack LIBOMP_HAVE_Z_NOEXECSTACK_FLAG) + endif() + + # Check Intel(R) C Compiler specific flags +@@ -146,8 +146,8 @@ if(CMAKE_C_COMPILER_ID STREQUAL "Intel" OR CMAKE_C_COMPILER_ID STREQUAL "IntelLL + check_cxx_compiler_flag(-Qoption,cpp,--extended_float_types LIBOMP_HAVE_EXTENDED_FLOAT_TYPES_FLAG) + check_cxx_compiler_flag(-falign-stack=maintain-16-byte LIBOMP_HAVE_FALIGN_STACK_FLAG) + check_cxx_compiler_flag("-opt-streaming-stores never" LIBOMP_HAVE_OPT_STREAMING_STORES_FLAG) +- libomp_check_linker_flag(-static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG) +- libomp_check_linker_flag(-no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG) ++ llvm_check_compiler_linker_flag(C -static-intel LIBOMP_HAVE_STATIC_INTEL_FLAG) ++ llvm_check_compiler_linker_flag(C -no-intel-extensions LIBOMP_HAVE_NO_INTEL_EXTENSIONS_FLAG) + check_library_exists(irc_pic _intel_fast_memcpy "" LIBOMP_HAVE_IRC_PIC_LIBRARY) + endif() + diff --git a/debian/patches/series b/debian/patches/series index 9da956cd..718c611a 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,5 +150,6 @@ bolt-disable-emit-relocs.patch link-grpc.diff amdgpu/nonlinux.patch -#amdgpu/bitcode-multiarch.patch ubuntu-releases.patch +new-cmake-build-fix.patch +HIP-search-path-fix.patch diff --git a/debian/rules b/debian/rules index 0f0a48ac..b0306214 100755 --- a/debian/rules +++ b/debian/rules @@ -147,15 +147,8 @@ endif endif endif -ifeq ($(USE_CLANG_PACKAGE_TO_BUILD_ITSELF),yes) -# For Debian stretch, gcc isn't available, let's use clang -# itself to build itself. -export CC=clang-14 -export CXX=clang++-14 -else export CC=gcc-$(GCC_VERSION) export CXX=g++-$(GCC_VERSION) -endif ifneq (,$(findstring $(DEB_HOST_ARCH),armel)) STAGE_ALL_CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=arm-linux-gnueabi @@ -188,7 +181,8 @@ ifneq (,$(filter $(DEB_HOST_ARCH),i386)) CMAKE_EXTRA += -DLLVM_HOST_TRIPLE=i386-linux-gnu endif - +# https://bugs.launchpad.net/bugs/2016471 +STAGE_2_CMAKE_EXTRA += -DLIBOMP_LDFLAGS=-Wl,-Bno-symbolic ifneq (,$(filter $(DEB_HOST_ARCH),mips64el)) # avoid an issue with search path on mips64el @@ -545,6 +539,15 @@ preconfigure: fi; \ fi + # workaround the breaks/replaces/conflicts + # https://bugs.launchpad.net/ubuntu/+source/llvm-toolchain-15/+bug/2008755 + # Yeah, this is ugly but I don't know how to do better + if test "$(DISTRO)" = "jammy" -o "$(DISTRO)" = "kinetic" -o "$(DISTRO)" = "focal"; then \ + if test "$(LLVM_VERSION)" = "15"; then \ + sed -i -e "s|libclang-common-15-dev (<< 1:15.0.6-5)|libclang-common-15-dev (<< 1:15.0.6-5), libclang-common-15-dev (= 1:15.0.7-0ubuntu0.22.04.1), libpolly-15-dev (= 1:15.0.7-0ubuntu0.22.04.1)|g" debian/control; \ + fi; \ + fi + ifdef LLVM_SPIRV # llvm-spirv was found, so we can enable *.spv files. Debian # buster and Ubuntu 18.04 don't have llvm-spirv to create the @@ -558,10 +561,6 @@ endif echo "" > debian/libc++abi-$(LLVM_VERSION)-dev-wasm32.install; \ fi - if test "$(DISTRO)" = "buster"; then \ - echo "" > debian/python3-lldb-$(LLVM_VERSION).install; \ - fi - # Conditionally enable install clangd grpc files if test "$(CLANGD_GRPC_INSTALLED)" = "yes"; then \ sed -i -e "s|#grpc\ ||g" debian/libclang-$(LLVM_VERSION)-dev.install; \