git: 2c14b6e0b4af - main - www/qt6-webengine: fix build with clang and libc++ 19
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 14 Sep 2024 07:23:25 UTC
The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/ports/commit/?id=2c14b6e0b4af03bff9cefe5a9288d6b7450755d8 commit 2c14b6e0b4af03bff9cefe5a9288d6b7450755d8 Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-09-13 07:34:56 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-09-14 07:22:49 +0000 www/qt6-webengine: fix build with clang and libc++ 19 Clang 19 now implements CWG 96 [1], which requires a template argument list after a 'template' keyword, resulting in errors similar to: ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:331:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 331 | Base::template Trace([](typename Base::TraceContext ctx) { ctx.Flush(); }); | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:337:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 337 | Base::template CallIfEnabled( | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:352:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 352 | Base::template Trace([&](typename Base::TraceContext ctx) { | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:499:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 499 | Base::template Trace([&](typename Base::TraceContext ctx) { | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:1050:22: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1050 | Base::template TraceWithInstances(instances, std::move(lambda)); | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:1064:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw] 1064 | Base::template Trace([&](typename Base::TraceContext ctx) { | ^ For perfetto, this was fixed by upstream commit e2f661907a [1]. Another typo is in the third-party quiche library, resulting in: ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h:201:48: error: no member named 'size' in 'QuicIntervalDeque<T, C>'; did you mean 'Size'? 201 | QUICHE_DCHECK(copy.index_ < copy.deque_->size()); | ^~~~ | Size ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/common/platform/api/quiche_logging.h:48:53: note: expanded from macro 'QUICHE_DCHECK' 48 | #define QUICHE_DCHECK(condition) QUICHE_DCHECK_IMPL(condition) | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h:89:46: note: expanded from macro 'QUICHE_DCHECK_IMPL' 89 | #define QUICHE_DCHECK_IMPL(condition) DCHECK(condition) | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/check.h:237:53: note: expanded from macro 'DCHECK' 237 | #define DCHECK(condition) EAT_CHECK_STREAM_PARAMS(!(condition)) | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/check.h:58:35: note: expanded from macro 'EAT_CHECK_STREAM_PARAMS' 58 | : ::logging::VoidifyStream(expr) & (*::logging::g_swallow_stream) | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h:241:15: note: 'Size' declared here 241 | std::size_t Size() const; | ^ And finally there is a typo in chromium: ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:181:19: error: no member named 'map' in 'Iterator<ReturnType>'; did you mean 'map_'? 181 | map_ = iter.map; | ^~~ | map_ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:239:26: note: 'map_' declared here 239 | raw_ptr<IDMap<V, K>> map_; | ^ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:182:20: error: no member named 'iter' in 'Iterator<ReturnType>'; did you mean 'iter_'? 182 | iter_ = iter.iter; | ^~~~ | iter_ ../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:240:40: note: 'iter_' declared here 240 | typename HashTable::const_iterator iter_; | ^ [1] https://android.googlesource.com/platform/external/perfetto/+/e2f661907a PR: 281474 Approved by: jhale (maintainer) --- ...src_3rdparty_chromium_base_containers_id__map.h | 13 +++++ ...he_src_quiche_quic_core_quic__interval__deque.h | 17 +++++++ ...party_blink_renderer_platform_wtf_hash__table.h | 31 ++++++++++++ ...o_tracing_internal_track__event__data__source.h | 55 ++++++++++++++++++++++ 4 files changed, 116 insertions(+) diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_containers_id__map.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_containers_id__map.h new file mode 100644 index 000000000000..6d81906f06b8 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_base_containers_id__map.h @@ -0,0 +1,13 @@ +--- src/3rdparty/chromium/base/containers/id_map.h.orig 2024-06-10 11:34:19 UTC ++++ src/3rdparty/chromium/base/containers/id_map.h +@@ -178,8 +178,8 @@ class IDMap final { + } + + const Iterator& operator=(const Iterator& iter) { +- map_ = iter.map; +- iter_ = iter.iter; ++ map_ = iter.map_; ++ iter_ = iter.iter_; + Init(); + return *this; + } diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_src_quiche_quic_core_quic__interval__deque.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_src_quiche_quic_core_quic__interval__deque.h new file mode 100644 index 000000000000..fb5cfb95ade4 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_net_third__party_quiche_src_quiche_quic_core_quic__interval__deque.h @@ -0,0 +1,17 @@ +--- src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h.orig 2024-06-10 11:34:19 UTC ++++ src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h +@@ -198,12 +198,12 @@ class QUIC_NO_EXPORT QuicIntervalDeque { + Iterator operator+(difference_type amount) const { + Iterator copy = *this; + copy.index_ += amount; +- QUICHE_DCHECK(copy.index_ < copy.deque_->size()); ++ QUICHE_DCHECK(copy.index_ < copy.deque_->Size()); + return copy; + } + Iterator& operator+=(difference_type amount) { + index_ += amount; +- QUICHE_DCHECK(index_ < deque_->size()); ++ QUICHE_DCHECK(index_ < deque_->Size()); + return *this; + } + difference_type operator-(const Iterator& rhs) const { diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_hash__table.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_hash__table.h new file mode 100644 index 000000000000..85db2a3579b7 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_wtf_hash__table.h @@ -0,0 +1,31 @@ +--- src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/hash_table.h.orig 2024-06-10 11:34:19 UTC ++++ src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/hash_table.h +@@ -1646,7 +1646,7 @@ HashTable<Key, Value, Extractor, Traits, KeyTraits, Al + } + } + table_ = temporary_table; +- Allocator::template BackingWriteBarrier(&table_); ++ Allocator::template BackingWriteBarrier<>(&table_); + + HashTableBucketInitializer<Traits, Allocator, Value>::InitializeTable( + original_table, new_table_size); +@@ -1700,7 +1700,7 @@ Value* HashTable<Key, Value, Extractor, Traits, KeyTra + // This swaps the newly allocated buffer with the current one. The store to + // the current table has to be atomic to prevent races with concurrent marker. + AsAtomicPtr(&table_)->store(new_hash_table.table_, std::memory_order_relaxed); +- Allocator::template BackingWriteBarrier(&table_); ++ Allocator::template BackingWriteBarrier<>(&table_); + table_size_ = new_table_size; + + new_hash_table.table_ = old_table; +@@ -1852,8 +1852,8 @@ void HashTable<Key, Value, Extractor, Traits, KeyTrait + // on the mutator thread, which is also the only one that writes to them, so + // there is *no* risk of data races when reading. + AtomicWriteSwap(table_, other.table_); +- Allocator::template BackingWriteBarrier(&table_); +- Allocator::template BackingWriteBarrier(&other.table_); ++ Allocator::template BackingWriteBarrier<>(&table_); ++ Allocator::template BackingWriteBarrier<>(&other.table_); + if (IsWeak<ValueType>::value) { + // Weak processing is omitted when no backing store is present. In case such + // an empty table is later on used it needs to be strongified. diff --git a/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_tracing_internal_track__event__data__source.h b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_tracing_internal_track__event__data__source.h new file mode 100644 index 000000000000..742c873632b9 --- /dev/null +++ b/www/qt6-webengine/files/patch-src_3rdparty_chromium_third__party_perfetto_include_perfetto_tracing_internal_track__event__data__source.h @@ -0,0 +1,55 @@ +--- src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h.orig 2024-06-10 11:34:19 UTC ++++ src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h +@@ -328,14 +328,13 @@ class TrackEventDataSource + } + + static void Flush() { +- Base::template Trace([](typename Base::TraceContext ctx) { ctx.Flush(); }); ++ Base::Trace([](typename Base::TraceContext ctx) { ctx.Flush(); }); + } + + // Determine if *any* tracing category is enabled. + static bool IsEnabled() { + bool enabled = false; +- Base::template CallIfEnabled( +- [&](uint32_t /*instances*/) { enabled = true; }); ++ Base::CallIfEnabled([&](uint32_t /*instances*/) { enabled = true; }); + return enabled; + } + +@@ -349,7 +348,7 @@ class TrackEventDataSource + static bool IsDynamicCategoryEnabled( + const DynamicCategory& dynamic_category) { + bool enabled = false; +- Base::template Trace([&](typename Base::TraceContext ctx) { ++ Base::Trace([&](typename Base::TraceContext ctx) { + enabled = enabled || IsDynamicCategoryEnabled(&ctx, dynamic_category); + }); + return enabled; +@@ -496,7 +495,7 @@ class TrackEventDataSource + const protos::gen::TrackDescriptor& desc) { + PERFETTO_DCHECK(track.uuid == desc.uuid()); + TrackRegistry::Get()->UpdateTrack(track, desc.SerializeAsString()); +- Base::template Trace([&](typename Base::TraceContext ctx) { ++ Base::Trace([&](typename Base::TraceContext ctx) { + TrackEventInternal::WriteTrackDescriptor( + track, ctx.tls_inst_->trace_writer.get(), ctx.GetIncrementalState(), + *ctx.GetCustomTlsState(), TrackEventInternal::GetTraceTime()); +@@ -1047,7 +1046,7 @@ class TrackEventDataSource + Lambda lambda) PERFETTO_ALWAYS_INLINE { + using CatTraits = CategoryTraits<CategoryType>; + if (CatTraits::kIsDynamic) { +- Base::template TraceWithInstances(instances, std::move(lambda)); ++ Base::TraceWithInstances(instances, std::move(lambda)); + } else { + Base::template TraceWithInstances<CategoryTracePointTraits>( + instances, std::move(lambda), {CatTraits::GetStaticIndex(category)}); +@@ -1061,7 +1060,7 @@ class TrackEventDataSource + const TrackType& track, + std::function<void(protos::pbzero::TrackDescriptor*)> callback) { + TrackRegistry::Get()->UpdateTrack(track, std::move(callback)); +- Base::template Trace([&](typename Base::TraceContext ctx) { ++ Base::Trace([&](typename Base::TraceContext ctx) { + TrackEventInternal::WriteTrackDescriptor( + track, ctx.tls_inst_->trace_writer.get(), ctx.GetIncrementalState(), + *ctx.GetCustomTlsState(), TrackEventInternal::GetTraceTime());