From ecd8fb5dd59308065fd14c8a92b8906cffe5a7ee Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 23 Mar 2022 08:54:50 +0100 Subject: [PATCH 01/25] New stable release --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/debian/changelog b/debian/changelog index 0036688c..a8d56c65 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-14 (1:14.0.0-1) unstable; urgency=medium + + * New stable release + + -- Sylvestre Ledru Wed, 23 Mar 2022 08:41:26 +0100 + llvm-toolchain-14 (1:14.0.0~+rc4-1) unstable; urgency=medium * New snapshot release (rc3 isn't a thing) From bb04d66687fd37bfc3cc6945cdeabf946ba9dfe7 Mon Sep 17 00:00:00 2001 From: Sedat Dilek Date: Wed, 30 Mar 2022 18:03:22 +0200 Subject: [PATCH 02/25] Add libc++ patches from upstream (post version 14.0.0) Details see Debian bug #1008657 ("clang-14: Integrate post v14.0.0 upstream patches") Link: https://bugs.debian.org/1008657 Signed-off-by: Sedat Dilek --- ...und-to-avoid-breaking-users-of-span-.patch | 390 ++++++++++++++++++ ...orkaround-for-pre-ranges-CTAD-in-std.patch | 78 ++++ debian/patches/series | 4 + 3 files changed, 472 insertions(+) create mode 100644 debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch create mode 100644 debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch diff --git a/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch b/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch new file mode 100644 index 00000000..e59a5605 --- /dev/null +++ b/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch @@ -0,0 +1,390 @@ +From add3ab7f4c8a7f25c2940889d397cbdc9f267666 Mon Sep 17 00:00:00 2001 +From: Louis Dionne +Date: Mon, 14 Mar 2022 11:50:02 -0400 +Subject: [PATCH] [libc++] Add workaround to avoid breaking users of + when are disabled + +Back in 3a208c68942e, we implemented the range-based constructor for . +However, in doing so, we removed a previous non-standard constructor that +we provided before shipping . Unfortunately, that breaks code that +was relying on a range-based constructor until we ship all of . + +This patch reintroduces the old non-conforming constructors and tests +that were removed in 3a208c68942e and uses them whenever is +not provided (e.g. in LLVM 14). This is only a temporary workaround +until we enable by default in C++20, which should hopefully +happen by LLVM 15. + +The goal is to cherry-pick this workaround back to the LLVM 14 release +branch, since I suspect the constructor removal may otherwise cause +breakage out there, like the breakage I saw internally. + +We could have avoided this situation by waiting for C++20 to be finalized +before shipping std::span. For example, we could have guarded it with +something like _LIBCPP_HAS_NO_INCOMPLETE_RANGES to prevent users from +accidentally starting to depend on it before it is stable. We did not +have these mechanisms when std::span was first implemented, though. + +NOTE: This is a pretty modified version of d4c39f1ab94 since that one +didn't apply properly onto the release/14.x branch. + +(cherry picked from commit d4c39f1ab94abc1dd4fff1e82dd4fa97265940e1) + +Differential Revision: https://reviews.llvm.org/D121739 +--- + libcxx/include/span | 50 ++++++- + .../containers/views/span.cons/range.pass.cpp | 141 ++++++++++++++++++ + .../views/span.cons/range.verify.cpp | 118 +++++++++++++++ + 3 files changed, 306 insertions(+), 3 deletions(-) + create mode 100644 libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp + create mode 100644 libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp + +diff --git a/libcxx/include/span b/libcxx/include/span +index fd95ecca17f7..b8dbc7e01fd6 100644 +--- a/libcxx/include/span ++++ b/libcxx/include/span +@@ -170,7 +170,25 @@ struct __is_std_span : false_type {}; + template + struct __is_std_span> : true_type {}; + +-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++// This is a temporary workaround until we ship -- we've unfortunately been ++// shipping before its API was finalized, and we used to provide a constructor ++// from container types that had the requirements below. To avoid breaking code that ++// has started relying on the range-based constructor until we ship all of , ++// we emulate the constructor requirements like this. ++template ++struct __span_compatible_range : false_type { }; ++ ++template ++struct __span_compatible_range<_Range, _ElementType, void_t< ++ enable_if_t>::value>, ++ enable_if_t>::value>, ++ enable_if_t>>, ++ decltype(data(declval<_Range>())), ++ decltype(size(declval<_Range>())), ++ enable_if_t()))>(*)[], _ElementType(*)[]>> ++>> : true_type { }; ++#else + template + concept __span_compatible_range = + ranges::contiguous_range<_Range> && +@@ -248,7 +266,22 @@ public: + _LIBCPP_INLINE_VISIBILITY + constexpr span(const array<_OtherElementType, _Extent>& __arr) noexcept : __data{__arr.data()} {} + +-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++ template ::value ++ >> ++ _LIBCPP_INLINE_VISIBILITY ++ constexpr explicit span(_Container& __c) : __data{std::data(__c)} { ++ _LIBCPP_ASSERT(std::size(__c) == _Extent, "size mismatch in span's constructor (range)"); ++ } ++ template ::value ++ >> ++ _LIBCPP_INLINE_VISIBILITY ++ constexpr explicit span(const _Container& __c) : __data{std::data(__c)} { ++ _LIBCPP_ASSERT(std::size(__c) == _Extent, "size mismatch in span's constructor (range)"); ++ } ++#else + template <__span_compatible_range _Range> + _LIBCPP_INLINE_VISIBILITY + constexpr explicit span(_Range&& __r) : __data{ranges::data(__r)} { +@@ -434,7 +467,18 @@ public: + _LIBCPP_INLINE_VISIBILITY + constexpr span(const array<_OtherElementType, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {} + +-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++ template ::value ++ >> ++ _LIBCPP_INLINE_VISIBILITY ++ constexpr span(_Container& __c) : __data(std::data(__c)), __size{std::size(__c)} {} ++ template ::value ++ >> ++ _LIBCPP_INLINE_VISIBILITY ++ constexpr span(const _Container& __c) : __data(std::data(__c)), __size{std::size(__c)} {} ++#else + template <__span_compatible_range _Range> + _LIBCPP_INLINE_VISIBILITY + constexpr span(_Range&& __r) : __data(ranges::data(__r)), __size{ranges::size(__r)} {} +diff --git a/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp b/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp +new file mode 100644 +index 000000000000..efa1001bdb5b +--- /dev/null ++++ b/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp +@@ -0,0 +1,141 @@ ++//===---------------------------------------------------------------------===// ++// ++// 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 ++// ++//===---------------------------------------------------------------------===// ++// UNSUPPORTED: c++03, c++11, c++14, c++17 ++ ++// ++ ++// template ++// constexpr explicit(Extent != dynamic_extent) span(Container&); ++// template ++// constexpr explicit(Extent != dynamic_extent) span(Container const&); ++ ++// This test checks for libc++'s non-conforming temporary extension to std::span ++// to support construction from containers that look like contiguous ranges. ++// ++// This extension is only supported when we don't ship , and we can ++// remove it once we get rid of _LIBCPP_HAS_NO_INCOMPLETE_RANGES. ++ ++#include ++#include ++#include ++#include ++ ++#include "test_macros.h" ++ ++// Look ma - I'm a container! ++template ++struct IsAContainer { ++ constexpr IsAContainer() : v_{} {} ++ constexpr size_t size() const {return 1;} ++ constexpr T *data() {return &v_;} ++ constexpr const T *data() const {return &v_;} ++ constexpr T *begin() {return &v_;} ++ constexpr const T *begin() const {return &v_;} ++ constexpr T *end() {return &v_ + 1;} ++ constexpr const T *end() const {return &v_ + 1;} ++ ++ constexpr T const *getV() const {return &v_;} // for checking ++ T v_; ++}; ++ ++ ++void checkCV() ++{ ++ std::vector v = {1,2,3}; ++ ++// Types the same ++ { ++ std::span< int> s1{v}; // a span< int> pointing at int. ++ } ++ ++// types different ++ { ++ std::span s1{v}; // a span pointing at int. ++ std::span< volatile int> s2{v}; // a span< volatile int> pointing at int. ++ std::span< volatile int> s3{v}; // a span< volatile int> pointing at const int. ++ std::span s4{v}; // a span pointing at int. ++ } ++ ++// Constructing a const view from a temporary ++ { ++ std::span s1{IsAContainer()}; ++ std::span s3{std::vector()}; ++ (void) s1; ++ (void) s3; ++ } ++} ++ ++ ++template ++constexpr bool testConstexprSpan() ++{ ++ constexpr IsAContainer val{}; ++ std::span s1{val}; ++ return s1.data() == val.getV() && s1.size() == 1; ++} ++ ++template ++constexpr bool testConstexprSpanStatic() ++{ ++ constexpr IsAContainer val{}; ++ std::span s1{val}; ++ return s1.data() == val.getV() && s1.size() == 1; ++} ++ ++template ++void testRuntimeSpan() ++{ ++ IsAContainer val{}; ++ const IsAContainer cVal; ++ std::span s1{val}; ++ std::span s2{cVal}; ++ assert(s1.data() == val.getV() && s1.size() == 1); ++ assert(s2.data() == cVal.getV() && s2.size() == 1); ++} ++ ++template ++void testRuntimeSpanStatic() ++{ ++ IsAContainer val{}; ++ const IsAContainer cVal; ++ std::span s1{val}; ++ std::span s2{cVal}; ++ assert(s1.data() == val.getV() && s1.size() == 1); ++ assert(s2.data() == cVal.getV() && s2.size() == 1); ++} ++ ++struct A{}; ++ ++int main(int, char**) ++{ ++ static_assert(testConstexprSpan(), ""); ++ static_assert(testConstexprSpan(), ""); ++ static_assert(testConstexprSpan(), ""); ++ static_assert(testConstexprSpan(), ""); ++ ++ static_assert(testConstexprSpanStatic(), ""); ++ static_assert(testConstexprSpanStatic(), ""); ++ static_assert(testConstexprSpanStatic(), ""); ++ static_assert(testConstexprSpanStatic(), ""); ++ ++ testRuntimeSpan(); ++ testRuntimeSpan(); ++ testRuntimeSpan(); ++ testRuntimeSpan(); ++ testRuntimeSpan(); ++ ++ testRuntimeSpanStatic(); ++ testRuntimeSpanStatic(); ++ testRuntimeSpanStatic(); ++ testRuntimeSpanStatic(); ++ testRuntimeSpanStatic(); ++ ++ checkCV(); ++ ++ return 0; ++} +diff --git a/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp b/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp +new file mode 100644 +index 000000000000..f0edf4f93536 +--- /dev/null ++++ b/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp +@@ -0,0 +1,118 @@ ++//===---------------------------------------------------------------------===// ++// ++// 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 ++// ++//===---------------------------------------------------------------------===// ++// UNSUPPORTED: c++03, c++11, c++14, c++17 ++ ++// ++ ++// template ++// constexpr explicit(Extent != dynamic_extent) span(Container&); ++// template ++// constexpr explicit(Extent != dynamic_extent) span(Container const&); ++ ++// This test checks for libc++'s non-conforming temporary extension to std::span ++// to support construction from containers that look like contiguous ranges. ++// ++// This extension is only supported when we don't ship , and we can ++// remove it once we get rid of _LIBCPP_HAS_NO_INCOMPLETE_RANGES. ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "test_macros.h" ++ ++// Look ma - I'm a container! ++template ++struct IsAContainer { ++ constexpr IsAContainer() : v_{} {} ++ constexpr size_t size() const {return 1;} ++ constexpr T *data() {return &v_;} ++ constexpr const T *data() const {return &v_;} ++ ++ constexpr const T *getV() const {return &v_;} // for checking ++ T v_; ++}; ++ ++template ++struct NotAContainerNoData { ++ size_t size() const {return 0;} ++}; ++ ++template ++struct NotAContainerNoSize { ++ const T *data() const {return nullptr;} ++}; ++ ++template ++struct NotAContainerPrivate { ++private: ++ size_t size() const {return 0;} ++ const T *data() const {return nullptr;} ++}; ++ ++template ++std::span createImplicitSpan(container c) { ++ return {c}; // expected-error {{chosen constructor is explicit in copy-initialization}} ++} ++ ++int main(int, char**) ++{ ++ ++// Making non-const spans from const sources (a temporary binds to `const &`) ++ { ++ std::span s1{IsAContainer()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s3{std::vector()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ } ++ ++// Missing size and/or data ++ { ++ std::span s1{NotAContainerNoData()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s3{NotAContainerNoSize()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s5{NotAContainerPrivate()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ ++// Again with the standard containers ++ std::span s11{std::deque()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s13{std::list()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s15{std::forward_list()}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ } ++ ++// Not the same type ++ { ++ IsAContainer c; ++ std::span s1{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ } ++ ++// CV wrong ++ { ++ IsAContainer c; ++ IsAContainer cv; ++ IsAContainer< volatile int> v; ++ ++ std::span< int> s1{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span< int> s2{v}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span< int> s3{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s4{v}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span s5{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span< volatile int> s6{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ std::span< volatile int> s7{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} ++ } ++ ++// explicit constructor necessary ++ { ++ IsAContainer c; ++ const IsAContainer cc; ++ ++ createImplicitSpan(c); ++ createImplicitSpan(cc); ++ } ++ ++ return 0; ++} +-- +2.35.1 + diff --git a/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch b/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch new file mode 100644 index 00000000..70666362 --- /dev/null +++ b/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch @@ -0,0 +1,78 @@ +From 3f43d803382d57e3fc010ca19833077d1023e9c9 Mon Sep 17 00:00:00 2001 +From: Louis Dionne +Date: Mon, 21 Mar 2022 17:05:06 -0400 +Subject: [PATCH] [libc++] Re-enable workaround for pre-ranges CTAD in + std::span + +See https://reviews.llvm.org/D121626 for details -- this re-enables the +CTAD we removed, since it does break some stuff as well (even though it's +not nearly as bad as the removed constructors fixed by D121626). + +(cherry picked from commit 6a7f0551178e966a686dd48dfa2ea045a35addef) + +Differential Revision: https://reviews.llvm.org/D122201 +--- + libcxx/include/span | 8 +++++++- + .../test/std/containers/views/span.cons/deduct.pass.cpp | 6 ------ + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/libcxx/include/span b/libcxx/include/span +index b8dbc7e01fd6..f33569031730 100644 +--- a/libcxx/include/span ++++ b/libcxx/include/span +@@ -622,7 +622,13 @@ template + template + span(const array<_Tp, _Sz>&) -> span; + +-#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) ++template ++ span(_Container&) -> span; ++ ++template ++ span(const _Container&) -> span; ++#else + template + span(_Range&&) -> span>>; + #endif +diff --git a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp +index 81632fed711d..e632feca2e1f 100644 +--- a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp ++++ b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp +@@ -6,7 +6,6 @@ + // + //===----------------------------------------------------------------------===// + // UNSUPPORTED: c++03, c++11, c++14, c++17 +-// UNSUPPORTED: libcpp-no-concepts + + // + +@@ -86,7 +85,6 @@ void test_std_array() { + } + } + +-#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES + void test_range_std_container() { + { + std::string str{"ABCDE"}; +@@ -104,17 +102,13 @@ void test_range_std_container() { + assert(s.data() == str.data()); + } + } +-#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES + + int main(int, char**) + { + test_iterator_sentinel(); + test_c_array(); + test_std_array(); +- +-#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES + test_range_std_container(); +-#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES + + return 0; + } +-- +2.35.1 + diff --git a/debian/patches/series b/debian/patches/series index df956934..fc005ac4 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,3 +150,7 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff + +# libc++ patches from upstream (post version 14.0.0) +0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch +0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch From 0552bc758bf59d9e8a82f0bc4fe576b9f6dcc5fb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 30 Mar 2022 18:32:31 +0200 Subject: [PATCH 03/25] Apply libc++ fixes which missed the 14 release. Thanks to Sedat Dilek for the patches (Closes: #1008657) --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index a8d56c65..9224d8d2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +llvm-toolchain-14 (1:14.0.0-2) unstable; urgency=medium + + * Apply libc++ fixes which missed the 14 release. + Thanks to Sedat Dilek for the patches + (Closes: #1008657) + + -- Sylvestre Ledru Wed, 30 Mar 2022 18:32:17 +0200 + llvm-toolchain-14 (1:14.0.0-1) unstable; urgency=medium * New stable release From 703626fba6b9c567dd0b4657315431e71fe51c63 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Thu, 31 Mar 2022 18:08:49 +0200 Subject: [PATCH 04/25] don't apply the patch for 14 on apt.llvm.org --- debian/patches/series | 4 ---- debian/rules | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/debian/patches/series b/debian/patches/series index fc005ac4..df956934 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,7 +150,3 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff - -# libc++ patches from upstream (post version 14.0.0) -0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch -0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch diff --git a/debian/rules b/debian/rules index 14c30427..5dd7144a 100755 --- a/debian/rules +++ b/debian/rules @@ -494,6 +494,13 @@ override_dh_auto_configure: preconfigure if test "$(SCAN_BUILD)" = "yes"; then \ patch -f -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ fi +# Don't apply these patches when building for apt.llvm.org + if test "$(LLVM_VERSION)" = "14"; then \ + if echo $(LLVM_VERSION_SNAPSHOT)|grep -v "~exp"; then \ + patch -f -p1 < debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch||true; \ + patch -f -p1 < debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch||true; \ + fi; \ + fi # Configure coverity (we need the compilers) + work around perf issues -(if test $(COVERITY_ENABLE) -eq 1; then \ @@ -1095,6 +1102,13 @@ override_dh_auto_clean: if test "$(SCAN_BUILD)" = "yes"; then \ patch -f -R -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ fi +# Don't apply these patches when building for apt.llvm.org + if test "$(LLVM_VERSION)" = "14"; then \ + if echo $(LLVM_VERSION_SNAPSHOT)|grep -v "~exp"; then \ + patch -f -p1 < debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch||true; \ + patch -f -p1 < debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch||true; \ + fi; \ + fi : # for some reason, the docs are written to debian/usr and debian/man ... rm -rf debian/usr debian/man From a51753db83515568272b2be9b7cadc41e29e46c5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Sat, 2 Apr 2022 14:17:32 +0200 Subject: [PATCH 05/25] When clang++- -P -E foo.cc fails, show the output --- debian/qualify-clang.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index fdfccb94..2a0a2d31 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -353,6 +353,8 @@ echo "#include " > foo.cc NBLINES=$(clang++-$VERSION -P -E foo.cc|wc -l) if test $NBLINES -lt 100; then echo "Error: more than 100 lines should be returned" + echo "output:" + clang++-$VERSION -P -E foo.cc exit 42 fi From 99fd399a0494e23f3f70605aeb8ad0593de3e1cf Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 27 Apr 2022 08:35:48 +0200 Subject: [PATCH 06/25] New upstream release Fixes the ABI issues --- debian/changelog | 9 ++++----- debian/rules | 14 -------------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9224d8d2..ff40d084 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,9 @@ -llvm-toolchain-14 (1:14.0.0-2) unstable; urgency=medium +llvm-toolchain-14 (1:14.0.1-1) unstable; urgency=medium - * Apply libc++ fixes which missed the 14 release. - Thanks to Sedat Dilek for the patches - (Closes: #1008657) + * New upstream release + Fixes the ABI issues - -- Sylvestre Ledru Wed, 30 Mar 2022 18:32:17 +0200 + -- Sylvestre Ledru Wed, 13 Apr 2022 09:33:24 +0200 llvm-toolchain-14 (1:14.0.0-1) unstable; urgency=medium diff --git a/debian/rules b/debian/rules index 5dd7144a..14c30427 100755 --- a/debian/rules +++ b/debian/rules @@ -494,13 +494,6 @@ override_dh_auto_configure: preconfigure if test "$(SCAN_BUILD)" = "yes"; then \ patch -f -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ fi -# Don't apply these patches when building for apt.llvm.org - if test "$(LLVM_VERSION)" = "14"; then \ - if echo $(LLVM_VERSION_SNAPSHOT)|grep -v "~exp"; then \ - patch -f -p1 < debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch||true; \ - patch -f -p1 < debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch||true; \ - fi; \ - fi # Configure coverity (we need the compilers) + work around perf issues -(if test $(COVERITY_ENABLE) -eq 1; then \ @@ -1102,13 +1095,6 @@ override_dh_auto_clean: if test "$(SCAN_BUILD)" = "yes"; then \ patch -f -R -p1 < debian/patches/on-the-fly/use-scan-build-runtimes.diff||true; \ fi -# Don't apply these patches when building for apt.llvm.org - if test "$(LLVM_VERSION)" = "14"; then \ - if echo $(LLVM_VERSION_SNAPSHOT)|grep -v "~exp"; then \ - patch -f -p1 < debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch||true; \ - patch -f -p1 < debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch||true; \ - fi; \ - fi : # for some reason, the docs are written to debian/usr and debian/man ... rm -rf debian/usr debian/man From 8e451fe3b3eeebce9c26632e27837dd8b501024f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 27 Apr 2022 08:37:36 +0200 Subject: [PATCH 07/25] remove the unsued abi fixes --- ...und-to-avoid-breaking-users-of-span-.patch | 390 ------------------ ...orkaround-for-pre-ranges-CTAD-in-std.patch | 78 ---- 2 files changed, 468 deletions(-) delete mode 100644 debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch delete mode 100644 debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch diff --git a/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch b/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch deleted file mode 100644 index e59a5605..00000000 --- a/debian/patches/0001-libc-Add-workaround-to-avoid-breaking-users-of-span-.patch +++ /dev/null @@ -1,390 +0,0 @@ -From add3ab7f4c8a7f25c2940889d397cbdc9f267666 Mon Sep 17 00:00:00 2001 -From: Louis Dionne -Date: Mon, 14 Mar 2022 11:50:02 -0400 -Subject: [PATCH] [libc++] Add workaround to avoid breaking users of - when are disabled - -Back in 3a208c68942e, we implemented the range-based constructor for . -However, in doing so, we removed a previous non-standard constructor that -we provided before shipping . Unfortunately, that breaks code that -was relying on a range-based constructor until we ship all of . - -This patch reintroduces the old non-conforming constructors and tests -that were removed in 3a208c68942e and uses them whenever is -not provided (e.g. in LLVM 14). This is only a temporary workaround -until we enable by default in C++20, which should hopefully -happen by LLVM 15. - -The goal is to cherry-pick this workaround back to the LLVM 14 release -branch, since I suspect the constructor removal may otherwise cause -breakage out there, like the breakage I saw internally. - -We could have avoided this situation by waiting for C++20 to be finalized -before shipping std::span. For example, we could have guarded it with -something like _LIBCPP_HAS_NO_INCOMPLETE_RANGES to prevent users from -accidentally starting to depend on it before it is stable. We did not -have these mechanisms when std::span was first implemented, though. - -NOTE: This is a pretty modified version of d4c39f1ab94 since that one -didn't apply properly onto the release/14.x branch. - -(cherry picked from commit d4c39f1ab94abc1dd4fff1e82dd4fa97265940e1) - -Differential Revision: https://reviews.llvm.org/D121739 ---- - libcxx/include/span | 50 ++++++- - .../containers/views/span.cons/range.pass.cpp | 141 ++++++++++++++++++ - .../views/span.cons/range.verify.cpp | 118 +++++++++++++++ - 3 files changed, 306 insertions(+), 3 deletions(-) - create mode 100644 libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp - create mode 100644 libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp - -diff --git a/libcxx/include/span b/libcxx/include/span -index fd95ecca17f7..b8dbc7e01fd6 100644 ---- a/libcxx/include/span -+++ b/libcxx/include/span -@@ -170,7 +170,25 @@ struct __is_std_span : false_type {}; - template - struct __is_std_span> : true_type {}; - --#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+// This is a temporary workaround until we ship -- we've unfortunately been -+// shipping before its API was finalized, and we used to provide a constructor -+// from container types that had the requirements below. To avoid breaking code that -+// has started relying on the range-based constructor until we ship all of , -+// we emulate the constructor requirements like this. -+template -+struct __span_compatible_range : false_type { }; -+ -+template -+struct __span_compatible_range<_Range, _ElementType, void_t< -+ enable_if_t>::value>, -+ enable_if_t>::value>, -+ enable_if_t>>, -+ decltype(data(declval<_Range>())), -+ decltype(size(declval<_Range>())), -+ enable_if_t()))>(*)[], _ElementType(*)[]>> -+>> : true_type { }; -+#else - template - concept __span_compatible_range = - ranges::contiguous_range<_Range> && -@@ -248,7 +266,22 @@ public: - _LIBCPP_INLINE_VISIBILITY - constexpr span(const array<_OtherElementType, _Extent>& __arr) noexcept : __data{__arr.data()} {} - --#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+ template ::value -+ >> -+ _LIBCPP_INLINE_VISIBILITY -+ constexpr explicit span(_Container& __c) : __data{std::data(__c)} { -+ _LIBCPP_ASSERT(std::size(__c) == _Extent, "size mismatch in span's constructor (range)"); -+ } -+ template ::value -+ >> -+ _LIBCPP_INLINE_VISIBILITY -+ constexpr explicit span(const _Container& __c) : __data{std::data(__c)} { -+ _LIBCPP_ASSERT(std::size(__c) == _Extent, "size mismatch in span's constructor (range)"); -+ } -+#else - template <__span_compatible_range _Range> - _LIBCPP_INLINE_VISIBILITY - constexpr explicit span(_Range&& __r) : __data{ranges::data(__r)} { -@@ -434,7 +467,18 @@ public: - _LIBCPP_INLINE_VISIBILITY - constexpr span(const array<_OtherElementType, _Sz>& __arr) noexcept : __data{__arr.data()}, __size{_Sz} {} - --#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+ template ::value -+ >> -+ _LIBCPP_INLINE_VISIBILITY -+ constexpr span(_Container& __c) : __data(std::data(__c)), __size{std::size(__c)} {} -+ template ::value -+ >> -+ _LIBCPP_INLINE_VISIBILITY -+ constexpr span(const _Container& __c) : __data(std::data(__c)), __size{std::size(__c)} {} -+#else - template <__span_compatible_range _Range> - _LIBCPP_INLINE_VISIBILITY - constexpr span(_Range&& __r) : __data(ranges::data(__r)), __size{ranges::size(__r)} {} -diff --git a/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp b/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp -new file mode 100644 -index 000000000000..efa1001bdb5b ---- /dev/null -+++ b/libcxx/test/libcxx/containers/views/span.cons/range.pass.cpp -@@ -0,0 +1,141 @@ -+//===---------------------------------------------------------------------===// -+// -+// 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 -+// -+//===---------------------------------------------------------------------===// -+// UNSUPPORTED: c++03, c++11, c++14, c++17 -+ -+// -+ -+// template -+// constexpr explicit(Extent != dynamic_extent) span(Container&); -+// template -+// constexpr explicit(Extent != dynamic_extent) span(Container const&); -+ -+// This test checks for libc++'s non-conforming temporary extension to std::span -+// to support construction from containers that look like contiguous ranges. -+// -+// This extension is only supported when we don't ship , and we can -+// remove it once we get rid of _LIBCPP_HAS_NO_INCOMPLETE_RANGES. -+ -+#include -+#include -+#include -+#include -+ -+#include "test_macros.h" -+ -+// Look ma - I'm a container! -+template -+struct IsAContainer { -+ constexpr IsAContainer() : v_{} {} -+ constexpr size_t size() const {return 1;} -+ constexpr T *data() {return &v_;} -+ constexpr const T *data() const {return &v_;} -+ constexpr T *begin() {return &v_;} -+ constexpr const T *begin() const {return &v_;} -+ constexpr T *end() {return &v_ + 1;} -+ constexpr const T *end() const {return &v_ + 1;} -+ -+ constexpr T const *getV() const {return &v_;} // for checking -+ T v_; -+}; -+ -+ -+void checkCV() -+{ -+ std::vector v = {1,2,3}; -+ -+// Types the same -+ { -+ std::span< int> s1{v}; // a span< int> pointing at int. -+ } -+ -+// types different -+ { -+ std::span s1{v}; // a span pointing at int. -+ std::span< volatile int> s2{v}; // a span< volatile int> pointing at int. -+ std::span< volatile int> s3{v}; // a span< volatile int> pointing at const int. -+ std::span s4{v}; // a span pointing at int. -+ } -+ -+// Constructing a const view from a temporary -+ { -+ std::span s1{IsAContainer()}; -+ std::span s3{std::vector()}; -+ (void) s1; -+ (void) s3; -+ } -+} -+ -+ -+template -+constexpr bool testConstexprSpan() -+{ -+ constexpr IsAContainer val{}; -+ std::span s1{val}; -+ return s1.data() == val.getV() && s1.size() == 1; -+} -+ -+template -+constexpr bool testConstexprSpanStatic() -+{ -+ constexpr IsAContainer val{}; -+ std::span s1{val}; -+ return s1.data() == val.getV() && s1.size() == 1; -+} -+ -+template -+void testRuntimeSpan() -+{ -+ IsAContainer val{}; -+ const IsAContainer cVal; -+ std::span s1{val}; -+ std::span s2{cVal}; -+ assert(s1.data() == val.getV() && s1.size() == 1); -+ assert(s2.data() == cVal.getV() && s2.size() == 1); -+} -+ -+template -+void testRuntimeSpanStatic() -+{ -+ IsAContainer val{}; -+ const IsAContainer cVal; -+ std::span s1{val}; -+ std::span s2{cVal}; -+ assert(s1.data() == val.getV() && s1.size() == 1); -+ assert(s2.data() == cVal.getV() && s2.size() == 1); -+} -+ -+struct A{}; -+ -+int main(int, char**) -+{ -+ static_assert(testConstexprSpan(), ""); -+ static_assert(testConstexprSpan(), ""); -+ static_assert(testConstexprSpan(), ""); -+ static_assert(testConstexprSpan(), ""); -+ -+ static_assert(testConstexprSpanStatic(), ""); -+ static_assert(testConstexprSpanStatic(), ""); -+ static_assert(testConstexprSpanStatic(), ""); -+ static_assert(testConstexprSpanStatic(), ""); -+ -+ testRuntimeSpan(); -+ testRuntimeSpan(); -+ testRuntimeSpan(); -+ testRuntimeSpan(); -+ testRuntimeSpan(); -+ -+ testRuntimeSpanStatic(); -+ testRuntimeSpanStatic(); -+ testRuntimeSpanStatic(); -+ testRuntimeSpanStatic(); -+ testRuntimeSpanStatic(); -+ -+ checkCV(); -+ -+ return 0; -+} -diff --git a/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp b/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp -new file mode 100644 -index 000000000000..f0edf4f93536 ---- /dev/null -+++ b/libcxx/test/libcxx/containers/views/span.cons/range.verify.cpp -@@ -0,0 +1,118 @@ -+//===---------------------------------------------------------------------===// -+// -+// 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 -+// -+//===---------------------------------------------------------------------===// -+// UNSUPPORTED: c++03, c++11, c++14, c++17 -+ -+// -+ -+// template -+// constexpr explicit(Extent != dynamic_extent) span(Container&); -+// template -+// constexpr explicit(Extent != dynamic_extent) span(Container const&); -+ -+// This test checks for libc++'s non-conforming temporary extension to std::span -+// to support construction from containers that look like contiguous ranges. -+// -+// This extension is only supported when we don't ship , and we can -+// remove it once we get rid of _LIBCPP_HAS_NO_INCOMPLETE_RANGES. -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "test_macros.h" -+ -+// Look ma - I'm a container! -+template -+struct IsAContainer { -+ constexpr IsAContainer() : v_{} {} -+ constexpr size_t size() const {return 1;} -+ constexpr T *data() {return &v_;} -+ constexpr const T *data() const {return &v_;} -+ -+ constexpr const T *getV() const {return &v_;} // for checking -+ T v_; -+}; -+ -+template -+struct NotAContainerNoData { -+ size_t size() const {return 0;} -+}; -+ -+template -+struct NotAContainerNoSize { -+ const T *data() const {return nullptr;} -+}; -+ -+template -+struct NotAContainerPrivate { -+private: -+ size_t size() const {return 0;} -+ const T *data() const {return nullptr;} -+}; -+ -+template -+std::span createImplicitSpan(container c) { -+ return {c}; // expected-error {{chosen constructor is explicit in copy-initialization}} -+} -+ -+int main(int, char**) -+{ -+ -+// Making non-const spans from const sources (a temporary binds to `const &`) -+ { -+ std::span s1{IsAContainer()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s3{std::vector()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ } -+ -+// Missing size and/or data -+ { -+ std::span s1{NotAContainerNoData()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s3{NotAContainerNoSize()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s5{NotAContainerPrivate()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ -+// Again with the standard containers -+ std::span s11{std::deque()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s13{std::list()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s15{std::forward_list()}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ } -+ -+// Not the same type -+ { -+ IsAContainer c; -+ std::span s1{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ } -+ -+// CV wrong -+ { -+ IsAContainer c; -+ IsAContainer cv; -+ IsAContainer< volatile int> v; -+ -+ std::span< int> s1{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span< int> s2{v}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span< int> s3{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s4{v}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span s5{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span< volatile int> s6{c}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ std::span< volatile int> s7{cv}; // expected-error {{no matching constructor for initialization of 'std::span'}} -+ } -+ -+// explicit constructor necessary -+ { -+ IsAContainer c; -+ const IsAContainer cc; -+ -+ createImplicitSpan(c); -+ createImplicitSpan(cc); -+ } -+ -+ return 0; -+} --- -2.35.1 - diff --git a/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch b/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch deleted file mode 100644 index 70666362..00000000 --- a/debian/patches/0002-libc-Re-enable-workaround-for-pre-ranges-CTAD-in-std.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 3f43d803382d57e3fc010ca19833077d1023e9c9 Mon Sep 17 00:00:00 2001 -From: Louis Dionne -Date: Mon, 21 Mar 2022 17:05:06 -0400 -Subject: [PATCH] [libc++] Re-enable workaround for pre-ranges CTAD in - std::span - -See https://reviews.llvm.org/D121626 for details -- this re-enables the -CTAD we removed, since it does break some stuff as well (even though it's -not nearly as bad as the removed constructors fixed by D121626). - -(cherry picked from commit 6a7f0551178e966a686dd48dfa2ea045a35addef) - -Differential Revision: https://reviews.llvm.org/D122201 ---- - libcxx/include/span | 8 +++++++- - .../test/std/containers/views/span.cons/deduct.pass.cpp | 6 ------ - 2 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/libcxx/include/span b/libcxx/include/span -index b8dbc7e01fd6..f33569031730 100644 ---- a/libcxx/include/span -+++ b/libcxx/include/span -@@ -622,7 +622,13 @@ template - template - span(const array<_Tp, _Sz>&) -> span; - --#if !defined(_LIBCPP_HAS_NO_CONCEPTS) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+#if defined(_LIBCPP_HAS_NO_CONCEPTS) || defined(_LIBCPP_HAS_NO_INCOMPLETE_RANGES) -+template -+ span(_Container&) -> span; -+ -+template -+ span(const _Container&) -> span; -+#else - template - span(_Range&&) -> span>>; - #endif -diff --git a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp -index 81632fed711d..e632feca2e1f 100644 ---- a/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp -+++ b/libcxx/test/std/containers/views/span.cons/deduct.pass.cpp -@@ -6,7 +6,6 @@ - // - //===----------------------------------------------------------------------===// - // UNSUPPORTED: c++03, c++11, c++14, c++17 --// UNSUPPORTED: libcpp-no-concepts - - // - -@@ -86,7 +85,6 @@ void test_std_array() { - } - } - --#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES - void test_range_std_container() { - { - std::string str{"ABCDE"}; -@@ -104,17 +102,13 @@ void test_range_std_container() { - assert(s.data() == str.data()); - } - } --#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES - - int main(int, char**) - { - test_iterator_sentinel(); - test_c_array(); - test_std_array(); -- --#ifndef _LIBCPP_HAS_NO_INCOMPLETE_RANGES - test_range_std_container(); --#endif // _LIBCPP_HAS_NO_INCOMPLETE_RANGES - - return 0; - } --- -2.35.1 - From 3a1862ccb96c1c4f8f21bb0ae4e8b63bfbf9cd2b Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Wed, 27 Apr 2022 23:33:37 +0200 Subject: [PATCH 08/25] New upstream release --- debian/changelog | 6 ++++++ debian/patches/bump-version.diff | 13 +++++++++++++ debian/patches/series | 1 + 3 files changed, 20 insertions(+) create mode 100644 debian/patches/bump-version.diff diff --git a/debian/changelog b/debian/changelog index ff40d084..73a19596 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-14 (1:14.0.2-1) unstable; urgency=medium + + * New upstream release + + -- Sylvestre Ledru Wed, 27 Apr 2022 08:36:00 +0200 + llvm-toolchain-14 (1:14.0.1-1) unstable; urgency=medium * New upstream release diff --git a/debian/patches/bump-version.diff b/debian/patches/bump-version.diff new file mode 100644 index 00000000..b6efa7c1 --- /dev/null +++ b/debian/patches/bump-version.diff @@ -0,0 +1,13 @@ +Index: llvm-toolchain-14-14.0.2/llvm/CMakeLists.txt +=================================================================== +--- llvm-toolchain-14-14.0.2.orig/llvm/CMakeLists.txt ++++ llvm-toolchain-14-14.0.2/llvm/CMakeLists.txt +@@ -17,7 +17,7 @@ if(NOT DEFINED LLVM_VERSION_MINOR) + set(LLVM_VERSION_MINOR 0) + endif() + if(NOT DEFINED LLVM_VERSION_PATCH) +- set(LLVM_VERSION_PATCH 1) ++ set(LLVM_VERSION_PATCH 2) + endif() + if(NOT DEFINED LLVM_VERSION_SUFFIX) + set(LLVM_VERSION_SUFFIX) diff --git a/debian/patches/series b/debian/patches/series index df956934..4b9f7726 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,3 +150,4 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff +bump-version.diff From 5e588bb5a844370e9c069ee5336a8c1275c0d437 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 29 Apr 2022 09:28:11 +0200 Subject: [PATCH 09/25] New upstream release --- debian/changelog | 6 ++++++ debian/patches/bump-version.diff | 13 ------------- debian/patches/series | 1 - 3 files changed, 6 insertions(+), 14 deletions(-) delete mode 100644 debian/patches/bump-version.diff diff --git a/debian/changelog b/debian/changelog index 73a19596..0c2fb2ff 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +llvm-toolchain-14 (1:14.0.3-1) unstable; urgency=medium + + * New upstream release + + -- Sylvestre Ledru Fri, 29 Apr 2022 09:23:16 +0200 + llvm-toolchain-14 (1:14.0.2-1) unstable; urgency=medium * New upstream release diff --git a/debian/patches/bump-version.diff b/debian/patches/bump-version.diff deleted file mode 100644 index b6efa7c1..00000000 --- a/debian/patches/bump-version.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: llvm-toolchain-14-14.0.2/llvm/CMakeLists.txt -=================================================================== ---- llvm-toolchain-14-14.0.2.orig/llvm/CMakeLists.txt -+++ llvm-toolchain-14-14.0.2/llvm/CMakeLists.txt -@@ -17,7 +17,7 @@ if(NOT DEFINED LLVM_VERSION_MINOR) - set(LLVM_VERSION_MINOR 0) - endif() - if(NOT DEFINED LLVM_VERSION_PATCH) -- set(LLVM_VERSION_PATCH 1) -+ set(LLVM_VERSION_PATCH 2) - endif() - if(NOT DEFINED LLVM_VERSION_SUFFIX) - set(LLVM_VERSION_SUFFIX) diff --git a/debian/patches/series b/debian/patches/series index 4b9f7726..df956934 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,4 +150,3 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff -bump-version.diff From 0ad684fcfc0cca328c3357807b892eeafe85c919 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 9 May 2022 20:41:22 +0200 Subject: [PATCH 10/25] Fix an autopkgtest on arm (Closes:# 1010716) Thanks to Pino Toscano for the patch --- debian/changelog | 7 +++++++ debian/qualify-clang.sh | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 0c2fb2ff..f47153da 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-14 (1:14.0.3-2) UNRELEASED; urgency=medium + + * Fix an autopkgtest on arm (Closes:# 1010716) + Thanks to Pino Toscano for the patch + + -- Sylvestre Ledru Mon, 09 May 2022 20:40:39 +0200 + llvm-toolchain-14 (1:14.0.3-1) unstable; urgency=medium * New upstream release diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index 2a0a2d31..b8070f9a 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -350,9 +350,9 @@ void increment(atomic_size_t *arg) { clang-$VERSION -v -c foo.c &> /dev/null echo "#include " > foo.cc -NBLINES=$(clang++-$VERSION -P -E foo.cc|wc -l) -if test $NBLINES -lt 100; then - echo "Error: more than 100 lines should be returned" +NBLINES=$(clang++-$VERSION -P -E foo.cc|grep .|wc -l) +if test $NBLINES -lt 60; then + echo "Error: more than 60 non-empty lines should be returned" echo "output:" clang++-$VERSION -P -E foo.cc exit 42 From 9b10fb51fc1700df311b1bf00defac686778663f Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 9 May 2022 20:50:13 +0200 Subject: [PATCH 11/25] Fix the search path for hip (Closes: #1010467) --- debian/changelog | 1 + debian/patches/path-hip.diff | 119 +++++++++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 121 insertions(+) create mode 100644 debian/patches/path-hip.diff diff --git a/debian/changelog b/debian/changelog index f47153da..4b839e42 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ llvm-toolchain-14 (1:14.0.3-2) UNRELEASED; urgency=medium * Fix an autopkgtest on arm (Closes:# 1010716) Thanks to Pino Toscano for the patch + * Fix the search path for hip (Closes: #1010467) -- Sylvestre Ledru Mon, 09 May 2022 20:40:39 +0200 diff --git a/debian/patches/path-hip.diff b/debian/patches/path-hip.diff new file mode 100644 index 00000000..be1a38a0 --- /dev/null +++ b/debian/patches/path-hip.diff @@ -0,0 +1,119 @@ +From 6730b44480fcce18bfbbae0c46719250e9eae425 Mon Sep 17 00:00:00 2001 +From: "Yaxun (Sam) Liu" +Date: Wed, 9 Mar 2022 09:10:17 -0500 +Subject: [PATCH] [HIP] Fix HIP include path + +The clang compiler prepends the HIP header include paths to the search +list using -internal-isystem when building for the HIP language. This +prevents warnings related to things like reserved identifiers when +including the HIP headers even when ROCm is installed in a non-system +directory, such as /opt/rocm. + +However, when HIP is installed in /usr, then the prepended include +path would be /usr/include. That is a problem, because the C standard +library headers are stored in /usr/include and the C++ standard +library headers must come before the C library headers in the search +path list (because the C++ standard library headers use #include_next +to include the C standard library headers). + +While the HIP wrapper headers _do_ need to be earlier in the search +than the C++ headers, those headers get their own subdirectory and +their own explicit -internal-isystem argument. This include path is for + and , which do not require a +particular search ordering with respect to the C or C++ headers. Thus, +HIP include path is added after other system include paths. + +With contribution from Cordell Bloor. + +Reviewed by: Artem Belevich + +Differential Revision: https://reviews.llvm.org/D120132 +--- + clang/lib/Driver/ToolChains/AMDGPU.cpp | 2 +- + clang/test/Driver/hip-include-path.hip | 10 +++++----- + clang/test/Driver/rocm-detect.hip | 6 +++--- + 3 files changed, 9 insertions(+), 9 deletions(-) + +Index: llvm-toolchain-14-14.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp +=================================================================== +--- llvm-toolchain-14-14.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp ++++ llvm-toolchain-14-14.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp +@@ -510,7 +510,7 @@ void RocmInstallationDetector::AddHIPInc + return; + } + +- CC1Args.push_back("-internal-isystem"); ++ CC1Args.push_back("-idirafter"); + CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath())); + if (UsesRuntimeWrapper) + CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"}); +Index: llvm-toolchain-14-14.0.0/clang/test/Driver/hip-include-path.hip +=================================================================== +--- llvm-toolchain-14-14.0.0.orig/clang/test/Driver/hip-include-path.hip ++++ llvm-toolchain-14-14.0.0/clang/test/Driver/hip-include-path.hip +@@ -19,24 +19,24 @@ + // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" +-// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" +-// NOHIP-NOT: "{{.*}}Inputs/rocm/include" ++// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" + // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" ++// NOHIP-NOT: "{{.*}}Inputs/rocm/include" + + // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" +-// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" +-// NOHIP-NOT: "{{.*}}Inputs/rocm/include" ++// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" + // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" + // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" ++// NOHIP-NOT: "{{.*}}Inputs/rocm/include" + + // RUN: %clang -c -### -target x86_64-unknown-linux-gnu --cuda-gpu-arch=gfx900 \ + // RUN: -std=c++11 --rocm-path=%S/Inputs/rocm -nogpulib %s 2>&1 \ +@@ -45,7 +45,7 @@ + // ROCM35-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" + // ROCM35-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" + // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}" +-// ROCM35-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" ++// ROCM35-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" + // ROCM35-NOT: "-include" "__clang_hip_runtime_wrapper.h" + // skip check of standard C++ include path + // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" +Index: llvm-toolchain-14-14.0.0/clang/test/Driver/rocm-detect.hip +=================================================================== +--- llvm-toolchain-14-14.0.0.orig/clang/test/Driver/rocm-detect.hip ++++ llvm-toolchain-14-14.0.0/clang/test/Driver/rocm-detect.hip +@@ -90,7 +90,7 @@ + // SPACK: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd + // SPACK: "-triple" "amdgcn-amd-amdhsa" + // SPACK-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" +-// SPACK-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" ++// SPACK-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" + + // SPACK-MULT: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin + // SPACK-MULT-DAG: Cannot use SPACK package hip-4.0.0 at [[DIR]] due to multiple installations for the same version +@@ -101,12 +101,12 @@ + // SPACK-SET: Found HIP installation: [[DIR]]/hip-4.0.0-abcd, version 4.0.20214-a2917cd + // SPACK-SET: "-triple" "amdgcn-amd-amdhsa" + // SPACK-SET-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" +-// SPACK-SET-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-abcd/include" ++// SPACK-SET-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-abcd/include" + + // SPACK-MISS: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin + // SPACK-MISS-DAG: SPACK package hip-4.0.0 not found at [[DIR]] + // SPACK-MISS-NOT: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd +-// SPACK-MISS-NOT: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" ++// SPACK-MISS-NOT: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" + + // SPACK-MISS-SILENT-NOT: SPACK package hip-{{.*}} not found at + // SPACK-MISS-SILENT-NOT: Found HIP installation diff --git a/debian/patches/series b/debian/patches/series index df956934..c837c953 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,3 +150,4 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff +path-hip.diff From a7c19f6285b08474e2f249a09785c20f148ce1cb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 10 May 2022 08:05:47 +0200 Subject: [PATCH 12/25] prepare upload --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4b839e42..35fe5ed5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -llvm-toolchain-14 (1:14.0.3-2) UNRELEASED; urgency=medium +llvm-toolchain-14 (1:14.0.3-2) unstable; urgency=medium * Fix an autopkgtest on arm (Closes:# 1010716) Thanks to Pino Toscano for the patch From c0119c7f4660dd264f62450e337fd189176d4e32 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 9 May 2022 22:55:27 +0200 Subject: [PATCH 13/25] Add the option -DLLVM_ENABLE_CURL=ON See https://github.com/llvm/llvm-project/issues/55289 --- debian/changelog | 10 ++++++++++ debian/control | 1 + debian/rules | 1 + 3 files changed, 12 insertions(+) diff --git a/debian/changelog b/debian/changelog index 35fe5ed5..72fcbc22 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +llvm-toolchain-snapshot (1:15~++20220509105605+460fc79a080b-1~exp1) experimental; urgency=medium + + * New snapshot release + * Disable libclc when spir is below 14 + Explicit load/store type does not match pointee type of pointer operand (Producer: 'LLVM15.0.0' Reader: 'LLVM 13.0.1') + * Add the option -DLLVM_ENABLE_CURL=ON + See https://github.com/llvm/llvm-project/issues/55289 + + -- Sylvestre Ledru Mon, 09 May 2022 22:57:11 +0200 + llvm-toolchain-14 (1:14.0.3-2) unstable; urgency=medium * Fix an autopkgtest on arm (Closes:# 1010716) diff --git a/debian/control b/debian/control index 37976868..8b450837 100644 --- a/debian/control +++ b/debian/control @@ -24,6 +24,7 @@ Build-Depends: debhelper (>= 10.0), cmake, ninja-build, libpfm4-dev [linux-any], python3-setuptools, libz3-dev, llvm-spirv [ amd64 arm64 armel armhf mips64el mipsel ppc64el s390x ] | hello [!i386], spirv-tools [ linux-any ] | hello [ !i386], + libcurl4-dev, libgrpc++-dev, libprotobuf-dev, protobuf-compiler, protobuf-compiler-grpc # "| hello" is for older buster/bionic distros without spirv support Build-Conflicts: oprofile diff --git a/debian/rules b/debian/rules index 14c30427..312ffd63 100755 --- a/debian/rules +++ b/debian/rules @@ -549,6 +549,7 @@ override_dh_auto_configure: preconfigure -DLLVM_INCLUDE_GO_TESTS=OFF \ -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ + -DLLVM_ENABLE_CURL=ON \ -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ -DCLANG_DEFAULT_LINKER=ld \ From 9ff1cecb07edca905786371c3c805886929363fd Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 10 May 2022 09:04:41 +0200 Subject: [PATCH 14/25] fix the changelog --- debian/changelog | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/debian/changelog b/debian/changelog index 72fcbc22..4014ebf8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,18 +1,11 @@ -llvm-toolchain-snapshot (1:15~++20220509105605+460fc79a080b-1~exp1) experimental; urgency=medium - - * New snapshot release - * Disable libclc when spir is below 14 - Explicit load/store type does not match pointee type of pointer operand (Producer: 'LLVM15.0.0' Reader: 'LLVM 13.0.1') - * Add the option -DLLVM_ENABLE_CURL=ON - See https://github.com/llvm/llvm-project/issues/55289 - - -- Sylvestre Ledru Mon, 09 May 2022 22:57:11 +0200 - llvm-toolchain-14 (1:14.0.3-2) unstable; urgency=medium * Fix an autopkgtest on arm (Closes:# 1010716) Thanks to Pino Toscano for the patch * Fix the search path for hip (Closes: #1010467) + * Add the option -DLLVM_ENABLE_CURL=ON + See https://github.com/llvm/llvm-project/issues/55289 + (LP: #1971743) -- Sylvestre Ledru Mon, 09 May 2022 20:40:39 +0200 From 7aacd1c1246c26c63321ed83e89cfb42b82f5a5d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Tue, 10 May 2022 09:09:01 +0200 Subject: [PATCH 15/25] check if llvm-debuginfod-find has been built with curl --- debian/qualify-clang.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/qualify-clang.sh b/debian/qualify-clang.sh index b8070f9a..b06271e0 100755 --- a/debian/qualify-clang.sh +++ b/debian/qualify-clang.sh @@ -329,6 +329,13 @@ if ! llvm-dis-$VERSION < foo.bc|grep -q "lli foo"; then exit 1 fi +# test if this is built with CURL +llvm-debuginfod-find-$VERSION --executable=1 5d016364c1cb69dd &> foo.log || true +if grep -q "No working HTTP" foo.log; then + echo "llvm-debuginfod-find isn't built with curl support" + exit 1 +fi + echo '#include ' > foo.c clang-$VERSION -c foo.c From 06906f3a85ab2a175edfefc0452cc8d789150a82 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 13 May 2022 18:44:33 +0200 Subject: [PATCH 16/25] fix the curl call in cmake --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index 312ffd63..aea1ce86 100755 --- a/debian/rules +++ b/debian/rules @@ -549,7 +549,6 @@ override_dh_auto_configure: preconfigure -DLLVM_INCLUDE_GO_TESTS=OFF \ -DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON \ -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON \ - -DLLVM_ENABLE_CURL=ON \ -DCLANG_PLUGIN_SUPPORT=OFF \ -DCLANG_BUILD_EXAMPLES=OFF \ -DCLANG_DEFAULT_LINKER=ld \ @@ -600,6 +599,7 @@ override_dh_auto_configure: preconfigure -DBOOTSTRAP_LLVM_POLLY_LINK_INTO_TOOLS=ON \ -DBOOTSTRAP_LLVM_EXPERIMENTAL_TARGETS_TO_BUILD="M68k" \ -DBOOTSTRAP_LLVM_LINK_LLVM_DYLIB=ON \ + -DBOOTSTRAP_LLVM_ENABLE_CURL=ON \ -DBOOTSTRAP_CLANG_LINK_CLANG_DYLIB=ON \ -DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \ -DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \ From c720154003627a2eeb16d0a5951c807fa2cc4452 Mon Sep 17 00:00:00 2001 From: John Paul Adrian Glaubitz Date: Fri, 13 May 2022 21:12:36 +0200 Subject: [PATCH 17/25] Enable GRPC build dependency only on supported targets --- debian/changelog | 7 +++++++ debian/control | 4 +++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 4014ebf8..fa3a3e2f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +llvm-toolchain-14 (1:14.0.3-3) UNRELEASED; urgency=medium + + [ John Paul Adrian Glaubitz ] + * Enable GRPC build dependency only on supported targets + + -- John Paul Adrian Glaubitz Fri, 13 May 2022 21:12:14 +0200 + llvm-toolchain-14 (1:14.0.3-2) unstable; urgency=medium * Fix an autopkgtest on arm (Closes:# 1010716) diff --git a/debian/control b/debian/control index 8b450837..4afb9394 100644 --- a/debian/control +++ b/debian/control @@ -25,7 +25,9 @@ Build-Depends: debhelper (>= 10.0), cmake, ninja-build, llvm-spirv [ amd64 arm64 armel armhf mips64el mipsel ppc64el s390x ] | hello [!i386], spirv-tools [ linux-any ] | hello [ !i386], libcurl4-dev, - libgrpc++-dev, libprotobuf-dev, protobuf-compiler, protobuf-compiler-grpc + libgrpc++-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el powerpc s390x], + protobuf-compiler-grpc [amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el powerpc s390x], + libprotobuf-dev, protobuf-compiler # "| hello" is for older buster/bionic distros without spirv support Build-Conflicts: oprofile Standards-Version: 4.2.1 From 21058bb901fae79e4128b7d0f94c009fc04d9c1d Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 16 May 2022 15:52:17 +0200 Subject: [PATCH 18/25] rebase of the patch --- debian/patches/test-disable-lldb-i386.diff | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/debian/patches/test-disable-lldb-i386.diff b/debian/patches/test-disable-lldb-i386.diff index 731b687d..0934d23a 100644 --- a/debian/patches/test-disable-lldb-i386.diff +++ b/debian/patches/test-disable-lldb-i386.diff @@ -1,24 +1,26 @@ -Index: llvm-toolchain-13-13.0.0~+rc3/integration-test-suite/tests/basic_lldb.c +Index: llvm-toolchain-14_14.0.4~++20220516033953+52528806579b/integration-test-suite/tests/basic_lldb.c =================================================================== ---- llvm-toolchain-13-13.0.0~+rc3.orig/integration-test-suite/tests/basic_lldb.c -+++ llvm-toolchain-13-13.0.0~+rc3/integration-test-suite/tests/basic_lldb.c -@@ -1,6 +1,7 @@ +--- llvm-toolchain-14_14.0.4~++20220516033953+52528806579b.orig/integration-test-suite/tests/basic_lldb.c ++++ llvm-toolchain-14_14.0.4~++20220516033953+52528806579b/integration-test-suite/tests/basic_lldb.c +@@ -1,7 +1,7 @@ // RUN: %clang -g -o %t %s // RUN: %lldb -s %S/basic_lldb.in %t | grep "main at basic_lldb.c:" // REQUIRES: lldb, clang -+ // XFAIL: i686, i386 +-// XFAIL: ppc64 ++// XFAIL: ppc64, i686, i386 int main() { int a=0; -Index: llvm-toolchain-13-13.0.0~+rc3/integration-test-suite/tests/basic_lldb2.cpp +Index: llvm-toolchain-14_14.0.4~++20220516033953+52528806579b/integration-test-suite/tests/basic_lldb2.cpp =================================================================== ---- llvm-toolchain-13-13.0.0~+rc3.orig/integration-test-suite/tests/basic_lldb2.cpp -+++ llvm-toolchain-13-13.0.0~+rc3/integration-test-suite/tests/basic_lldb2.cpp -@@ -1,6 +1,7 @@ +--- llvm-toolchain-14_14.0.4~++20220516033953+52528806579b.orig/integration-test-suite/tests/basic_lldb2.cpp ++++ llvm-toolchain-14_14.0.4~++20220516033953+52528806579b/integration-test-suite/tests/basic_lldb2.cpp +@@ -1,7 +1,7 @@ // RUN: %clangxx -g -o %t %s // RUN: %lldb -s %S/basic_lldb2.in %t | grep "stop reason = step over" // REQUIRES: lldb, clangxx -+ // XFAIL: i686, i386 +-// XFAIL: ppc64 ++// XFAIL: ppc64, i686, i386 #include int main (void) From 8699fb05dceea702cf4a2737d71d6ad4b623f8bb Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 16 May 2022 15:52:22 +0200 Subject: [PATCH 19/25] remove of the patch --- debian/patches/path-hip.diff | 119 ----------------------------------- debian/patches/series | 1 - 2 files changed, 120 deletions(-) delete mode 100644 debian/patches/path-hip.diff diff --git a/debian/patches/path-hip.diff b/debian/patches/path-hip.diff deleted file mode 100644 index be1a38a0..00000000 --- a/debian/patches/path-hip.diff +++ /dev/null @@ -1,119 +0,0 @@ -From 6730b44480fcce18bfbbae0c46719250e9eae425 Mon Sep 17 00:00:00 2001 -From: "Yaxun (Sam) Liu" -Date: Wed, 9 Mar 2022 09:10:17 -0500 -Subject: [PATCH] [HIP] Fix HIP include path - -The clang compiler prepends the HIP header include paths to the search -list using -internal-isystem when building for the HIP language. This -prevents warnings related to things like reserved identifiers when -including the HIP headers even when ROCm is installed in a non-system -directory, such as /opt/rocm. - -However, when HIP is installed in /usr, then the prepended include -path would be /usr/include. That is a problem, because the C standard -library headers are stored in /usr/include and the C++ standard -library headers must come before the C library headers in the search -path list (because the C++ standard library headers use #include_next -to include the C standard library headers). - -While the HIP wrapper headers _do_ need to be earlier in the search -than the C++ headers, those headers get their own subdirectory and -their own explicit -internal-isystem argument. This include path is for - and , which do not require a -particular search ordering with respect to the C or C++ headers. Thus, -HIP include path is added after other system include paths. - -With contribution from Cordell Bloor. - -Reviewed by: Artem Belevich - -Differential Revision: https://reviews.llvm.org/D120132 ---- - clang/lib/Driver/ToolChains/AMDGPU.cpp | 2 +- - clang/test/Driver/hip-include-path.hip | 10 +++++----- - clang/test/Driver/rocm-detect.hip | 6 +++--- - 3 files changed, 9 insertions(+), 9 deletions(-) - -Index: llvm-toolchain-14-14.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp -=================================================================== ---- llvm-toolchain-14-14.0.0.orig/clang/lib/Driver/ToolChains/AMDGPU.cpp -+++ llvm-toolchain-14-14.0.0/clang/lib/Driver/ToolChains/AMDGPU.cpp -@@ -510,7 +510,7 @@ void RocmInstallationDetector::AddHIPInc - return; - } - -- CC1Args.push_back("-internal-isystem"); -+ CC1Args.push_back("-idirafter"); - CC1Args.push_back(DriverArgs.MakeArgString(getIncludePath())); - if (UsesRuntimeWrapper) - CC1Args.append({"-include", "__clang_hip_runtime_wrapper.h"}); -Index: llvm-toolchain-14-14.0.0/clang/test/Driver/hip-include-path.hip -=================================================================== ---- llvm-toolchain-14-14.0.0.orig/clang/test/Driver/hip-include-path.hip -+++ llvm-toolchain-14-14.0.0/clang/test/Driver/hip-include-path.hip -@@ -19,24 +19,24 @@ - // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" - // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" - // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" --// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" --// NOHIP-NOT: "{{.*}}Inputs/rocm/include" -+// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" - // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" - // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" - // skip check of standard C++ include path - // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" - // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" -+// NOHIP-NOT: "{{.*}}Inputs/rocm/include" - - // COMMON-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" - // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" - // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" --// HIP-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" --// NOHIP-NOT: "{{.*}}Inputs/rocm/include" -+// HIP-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" - // HIP-SAME: "-include" "__clang_hip_runtime_wrapper.h" - // NOHIP-NOT: "-include" "__clang_hip_runtime_wrapper.h" - // skip check of standard C++ include path - // CLANG-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" - // NOCLANG-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" -+// NOHIP-NOT: "{{.*}}Inputs/rocm/include" - - // RUN: %clang -c -### -target x86_64-unknown-linux-gnu --cuda-gpu-arch=gfx900 \ - // RUN: -std=c++11 --rocm-path=%S/Inputs/rocm -nogpulib %s 2>&1 \ -@@ -45,7 +45,7 @@ - // ROCM35-LABEL: "{{[^"]*}}clang{{[^"]*}}" "-cc1" - // ROCM35-NOT: "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include/cuda_wrappers" - // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}" --// ROCM35-SAME: "-internal-isystem" "{{[^"]*}}Inputs/rocm/include" -+// ROCM35-SAME: "-idirafter" "{{[^"]*}}Inputs/rocm/include" - // ROCM35-NOT: "-include" "__clang_hip_runtime_wrapper.h" - // skip check of standard C++ include path - // ROCM35-SAME: "-internal-isystem" "{{[^"]*}}/lib{{[^"]*}}/clang/{{[^"]*}}/include" -Index: llvm-toolchain-14-14.0.0/clang/test/Driver/rocm-detect.hip -=================================================================== ---- llvm-toolchain-14-14.0.0.orig/clang/test/Driver/rocm-detect.hip -+++ llvm-toolchain-14-14.0.0/clang/test/Driver/rocm-detect.hip -@@ -90,7 +90,7 @@ - // SPACK: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd - // SPACK: "-triple" "amdgcn-amd-amdhsa" - // SPACK-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" --// SPACK-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" -+// SPACK-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" - - // SPACK-MULT: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin - // SPACK-MULT-DAG: Cannot use SPACK package hip-4.0.0 at [[DIR]] due to multiple installations for the same version -@@ -101,12 +101,12 @@ - // SPACK-SET: Found HIP installation: [[DIR]]/hip-4.0.0-abcd, version 4.0.20214-a2917cd - // SPACK-SET: "-triple" "amdgcn-amd-amdhsa" - // SPACK-SET-SAME: "-mlink-builtin-bitcode" "[[DIR]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/amdgcn/bitcode/hip.bc" --// SPACK-SET-SAME: "-internal-isystem" "[[DIR]]/hip-4.0.0-abcd/include" -+// SPACK-SET-SAME: "-idirafter" "[[DIR]]/hip-4.0.0-abcd/include" - - // SPACK-MISS: InstalledDir: [[DIR:.*]]/llvm-amdgpu-4.0.0-ieagcs7inf7runpyfvepqkurasoglq4z/bin - // SPACK-MISS-DAG: SPACK package hip-4.0.0 not found at [[DIR]] - // SPACK-MISS-NOT: Found HIP installation: [[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5, version 4.0.20214-a2917cd --// SPACK-MISS-NOT: "-internal-isystem" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" -+// SPACK-MISS-NOT: "-idirafter" "[[DIR]]/hip-4.0.0-5f63slrursbrvfe2txrrjkynbsywsob5/include" - - // SPACK-MISS-SILENT-NOT: SPACK package hip-{{.*}} not found at - // SPACK-MISS-SILENT-NOT: Found HIP installation diff --git a/debian/patches/series b/debian/patches/series index c837c953..df956934 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,4 +150,3 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff -path-hip.diff From 14cf2917bf9d9bd8e69ebec1a707bd0323dfac97 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Mon, 30 May 2022 22:17:02 +0200 Subject: [PATCH 20/25] Add breaks/replaces for grpc binaries being placed in another package in Ubuntu --- debian/control | 2 ++ 1 file changed, 2 insertions(+) diff --git a/debian/control b/debian/control index 4afb9394..2c45b19b 100644 --- a/debian/control +++ b/debian/control @@ -151,6 +151,8 @@ Section: libdevel Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs}, ${dep:devlibs-objc}, libclang1-14 (= ${binary:Version}), libclang-common-14-dev (= ${binary:Version}) +Breaks: llvm-14-dev (<< 1:14.0.4-2) +Replaces: llvm-14-dev (<< 1:14.0.4-2) Description: Clang library - Development package Clang project is a C, C++, Objective C and Objective C++ front-end based on the LLVM compiler. Its goal is to offer a replacement to the From b8e0a22e40395259f0c081cf30f5f7e1d639b6fd Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Mon, 30 May 2022 22:17:37 +0200 Subject: [PATCH 21/25] Fix GRPC installation for ports architectures --- debian/control | 7 ++++--- debian/libclang-X.Y-dev.install.in | 7 +++++++ debian/rules | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/debian/control b/debian/control index 2c45b19b..c04461e5 100644 --- a/debian/control +++ b/debian/control @@ -25,9 +25,10 @@ Build-Depends: debhelper (>= 10.0), cmake, ninja-build, llvm-spirv [ amd64 arm64 armel armhf mips64el mipsel ppc64el s390x ] | hello [!i386], spirv-tools [ linux-any ] | hello [ !i386], libcurl4-dev, - libgrpc++-dev [amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el powerpc s390x], - protobuf-compiler-grpc [amd64 arm64 armel armhf i386 mips64el mipsel ppc64 ppc64el powerpc s390x], - libprotobuf-dev, protobuf-compiler + libgrpc++-dev [amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x], + protobuf-compiler-grpc [amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x], + libprotobuf-dev [amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x], + protobuf-compiler [amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] # "| hello" is for older buster/bionic distros without spirv support Build-Conflicts: oprofile Standards-Version: 4.2.1 diff --git a/debian/libclang-X.Y-dev.install.in b/debian/libclang-X.Y-dev.install.in index b967aff8..d412750d 100644 --- a/debian/libclang-X.Y-dev.install.in +++ b/debian/libclang-X.Y-dev.install.in @@ -1,3 +1,5 @@ +#!/usr/bin/dh-exec + usr/lib/llvm-@LLVM_VERSION@/include/clang usr/lib/llvm-@LLVM_VERSION@/include/clang-c usr/lib/llvm-@LLVM_VERSION@/include/clang-tidy @@ -5,3 +7,8 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang*a usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@*.so usr/lib/llvm-@LLVM_VERSION@/lib/libfindAllSymbols.a + +# clangd grpc architectures +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libRemoteIndexProto.a +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libRemoteIndexServiceProto.a +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libMonitoringServiceProto.a diff --git a/debian/rules b/debian/rules index aea1ce86..f2ba2cda 100755 --- a/debian/rules +++ b/debian/rules @@ -455,6 +455,7 @@ preconfigure: # Make install file executable for dh-exec chmod +x \ debian/clang-tools-$(LLVM_VERSION).install \ + debian/libclang-$(LLVM_VERSION)-dev.install \ debian/libclang-common-$(LLVM_VERSION)-dev.install \ debian/libomp-$(LLVM_VERSION)-dev.install \ debian/llvm-$(LLVM_VERSION)-dev.install \ From eee8322010d2007499819e7601fddee3cc85527b Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Mon, 30 May 2022 22:18:03 +0200 Subject: [PATCH 22/25] Add support for Ubuntu kinetic --- debian/patches/series | 1 + debian/patches/ubuntu-kinetic.patch | 38 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 debian/patches/ubuntu-kinetic.patch diff --git a/debian/patches/series b/debian/patches/series index df956934..a8251ea9 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -150,3 +150,4 @@ wasm-ld-path.diff python3-scan-build.py revert-update-doc.diff fix-typo.diff +ubuntu-kinetic.patch diff --git a/debian/patches/ubuntu-kinetic.patch b/debian/patches/ubuntu-kinetic.patch new file mode 100644 index 00000000..ca71aab1 --- /dev/null +++ b/debian/patches/ubuntu-kinetic.patch @@ -0,0 +1,38 @@ +Description: Update the list of Ubuntu release names +Author: Steve Langasek +Last-Update: 2022-05-03 +Forwarded: no + +Index: llvm-toolchain-14-14.0.0/clang/include/clang/Driver/Distro.h +=================================================================== +--- llvm-toolchain-14-14.0.0.orig/clang/include/clang/Driver/Distro.h ++++ llvm-toolchain-14-14.0.0/clang/include/clang/Driver/Distro.h +@@ -74,6 +74,7 @@ + UbuntuHirsute, + UbuntuImpish, + UbuntuJammy, ++ UbuntuKinetic, + UnknownDistro + }; + +@@ -125,7 +126,7 @@ + } + + bool IsUbuntu() const { +- return DistroVal >= UbuntuHardy && DistroVal <= UbuntuJammy; ++ return DistroVal >= UbuntuHardy && DistroVal <= UbuntuKinetic; + } + + bool IsAlpineLinux() const { return DistroVal == AlpineLinux; } +Index: llvm-toolchain-14-14.0.0/clang/lib/Driver/Distro.cpp +=================================================================== +--- llvm-toolchain-14-14.0.0.orig/clang/lib/Driver/Distro.cpp ++++ llvm-toolchain-14-14.0.0/clang/lib/Driver/Distro.cpp +@@ -91,6 +91,7 @@ + .Case("hirsute", Distro::UbuntuHirsute) + .Case("impish", Distro::UbuntuImpish) + .Case("jammy", Distro::UbuntuJammy) ++ .Case("kinetic", Distro::UbuntuKinetic) + .Default(Distro::UnknownDistro); + return Version; + } From 4afa87abac1bd8886a4cb9cbc3c9da205455bdde Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Mon, 30 May 2022 22:18:15 +0200 Subject: [PATCH 23/25] rules: take some patches from Ubuntu to save extra space during build --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index f2ba2cda..e63e7545 100755 --- a/debian/rules +++ b/debian/rules @@ -803,6 +803,7 @@ endif # Probably useless rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python*/*-packages/six.py + rm -f $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/local/lib/python*/*-packages/six.py rm -rf $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/__pycache__/ \ $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/build/utils/lit/lit/*/__pycache__/ @@ -1099,5 +1100,7 @@ override_dh_auto_clean: fi : # for some reason, the docs are written to debian/usr and debian/man ... rm -rf debian/usr debian/man + : # remove extra stamps + rm -f debian-*-build .PHONY: override_dh_strip preconfigure debian-full-build debian-libfuzzer-build debian-libclc-build From 550cf108941d7cb54c2ebe91eb7fbd5923a657bc Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Mon, 30 May 2022 22:19:11 +0200 Subject: [PATCH 24/25] Update changelog --- debian/changelog | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/debian/changelog b/debian/changelog index fa3a3e2f..69b12d7a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,22 @@ -llvm-toolchain-14 (1:14.0.3-3) UNRELEASED; urgency=medium +llvm-toolchain-14 (1:14.0.4-2) unstable; urgency=low + + * Merge from Debian unstable. Remaining changes: + * Add breaks/replaces for grpc binaries being placed in another package in Ubuntu + * Fix GRPC installation for ports architectures + * Add support for Ubuntu kinetic + * rules: take some patches from Ubuntu to save extra space during build + + -- Gianfranco Costamagna Sun, 29 May 2022 12:53:47 +0200 + +llvm-toolchain-14 (1:14.0.4-1) unstable; urgency=medium [ John Paul Adrian Glaubitz ] * Enable GRPC build dependency only on supported targets - -- John Paul Adrian Glaubitz Fri, 13 May 2022 21:12:14 +0200 + [ Sylvestre Ledru ] + * New upstream release + + -- Sylvestre Ledru Wed, 25 May 2022 08:49:20 +0200 llvm-toolchain-14 (1:14.0.3-2) unstable; urgency=medium From 51502916c4d746e86f35123a71151574aeef4470 Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna Date: Tue, 31 May 2022 12:38:47 +0200 Subject: [PATCH 25/25] Fix GRPC installation due to renamed binaries --- debian/changelog | 7 ++++++- debian/libclang-X.Y-dev.install.in | 6 +++--- debian/libclang1-X.Y.install.in | 1 - 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 69b12d7a..e9c7df5d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,11 @@ +llvm-toolchain-14 (1:14.0.4-3) unstable; urgency=medium + + * Fix GRPC installation path and files + + -- Gianfranco Costamagna Tue, 31 May 2022 12:09:28 +0200 + llvm-toolchain-14 (1:14.0.4-2) unstable; urgency=low - * Merge from Debian unstable. Remaining changes: * Add breaks/replaces for grpc binaries being placed in another package in Ubuntu * Fix GRPC installation for ports architectures * Add support for Ubuntu kinetic diff --git a/debian/libclang-X.Y-dev.install.in b/debian/libclang-X.Y-dev.install.in index d412750d..5ac12885 100644 --- a/debian/libclang-X.Y-dev.install.in +++ b/debian/libclang-X.Y-dev.install.in @@ -9,6 +9,6 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@*.so usr/lib/llvm-@LLVM_VERSION@/lib/libfindAllSymbols.a # clangd grpc architectures -[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libRemoteIndexProto.a -[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libRemoteIndexServiceProto.a -[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libMonitoringServiceProto.a +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libclangdRemoteIndexProto.a +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libclangdRemoteIndexServiceProto.a +[amd64 arm64 armel armhf mips64el mipsel ppc64 ppc64el powerpc s390x] usr/lib/llvm-@LLVM_VERSION@/lib/libclangdMonitoringServiceProto.a diff --git a/debian/libclang1-X.Y.install.in b/debian/libclang1-X.Y.install.in index 81396058..b197f9ad 100644 --- a/debian/libclang1-X.Y.install.in +++ b/debian/libclang1-X.Y.install.in @@ -1,3 +1,2 @@ usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.1* /usr/lib/@DEB_HOST_MULTIARCH@/ usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so.1 -