git: 6382cb65433d - 2026Q1 - www/qt5-webengine: fix build with clang 21
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 12 Feb 2026 20:51:43 UTC
The branch 2026Q1 has been updated by dim:
URL: https://cgit.FreeBSD.org/ports/commit/?id=6382cb65433d4a5f25648a312473bd9cff05451f
commit 6382cb65433d4a5f25648a312473bd9cff05451f
Author: Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2026-02-10 19:56:28 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2026-02-12 20:51:36 +0000
www/qt5-webengine: fix build with clang 21
With libc++ 21 www/qt5-webengine fails to build, with errors similar to:
In file included from gen/third_party/blink/renderer/platform/platform_jumbo_54.cc:7:
./../../../../kde-qtwebengine-5.15.19p0/src/3rdparty/chromium/third_party/blink/renderer/platform/image-encoders/image_encoder_utils.cc:63:5: error: static assertion expression is not an integral constant expression
[...]
../../../../kde-qtwebengine-5.15.19p0/src/3rdparty/chromium/base/metrics/histogram_macros_internal.h:45:12: note: integer value 8 is outside the valid range of values [0, 7] for the enumeration type 'RequestedImageMimeType'
45 | return static_cast<Enum>(
| ^
https://chromium.googlesource.com/chromium/src/+/bb340f66aaf44206fa5106509fb4e8c0719ee831
fixes these, but has to be slightly adjusted to make it apply to the
specific chromium version included in qt5-webengine.
PR: 293093
Approved by: jhale (maintainer)
MFH: 2026Q1
(cherry picked from commit f9807ebb6bda547e662d094b879e68d9ff96b06b)
---
...3rdparty_chromium_base_metrics_histogram__macros.h | 19 +++++++++++++++++++
...hromium_base_metrics_histogram__macros__internal.h | 13 +++++++++++++
...omponents_download_public_common_download__stats.h | 11 +++++++++++
...onents_sessions_core_session__service__commands.cc | 13 +++++++++++++
...ntent_browser_code__cache_generated__code__cache.h | 12 ++++++++++++
...rc_3rdparty_chromium_net_cookies_cookie__monster.h | 11 +++++++++++
...derer_core_imagebitmap_image__bitmap__factories.cc | 11 +++++++++++
...r_platform_image-encoders_image__encoder__utils.cc | 11 +++++++++++
8 files changed, 101 insertions(+)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros.h
new file mode 100644
index 000000000000..abd70a4199fe
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros.h
@@ -0,0 +1,19 @@
+--- src/3rdparty/chromium/base/metrics/histogram_macros.h.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/base/metrics/histogram_macros.h
+@@ -54,13 +54,14 @@
+ //
+ // The second variant requires three arguments: the first two are the same as
+ // before, and the third argument is the enum boundary: this must be strictly
+-// greater than any other enumerator that will be sampled.
++// greater than any other enumerator that will be sampled. This only works for
++// enums with a fixed underlying type.
+ //
+ // Sample usage:
+ // // These values are logged to UMA. Entries should not be renumbered and
+ // // numeric values should never be reused. Please keep in sync with "MyEnum"
+ // // in src/tools/metrics/histograms/enums.xml.
+-// enum class MyEnum {
++// enum class MyEnum : uint8_t {
+ // FIRST_VALUE = 0,
+ // SECOND_VALUE = 1,
+ // ...
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros__internal.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros__internal.h
new file mode 100644
index 000000000000..27e8ff927175
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_metrics_histogram__macros__internal.h
@@ -0,0 +1,13 @@
+--- src/3rdparty/chromium/base/metrics/histogram_macros_internal.h.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/base/metrics/histogram_macros_internal.h
+@@ -42,6 +42,10 @@ struct EnumSizeTraits<
+ Enum,
+ std::enable_if_t<std::is_enum<decltype(Enum::kMaxValue)>::value>> {
+ static constexpr Enum Count() {
++ // If you're getting
++ // note: integer value X is outside the valid range of values [0, X] for
++ // this enumeration type
++ // Then you need to give your enum a fixed underlying type.
+ return static_cast<Enum>(
+ static_cast<std::underlying_type_t<Enum>>(Enum::kMaxValue) + 1);
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_public_common_download__stats.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_public_common_download__stats.h
new file mode 100644
index 000000000000..0fcaaf92b404
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_download_public_common_download__stats.h
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/components/download/public/common/download_stats.h.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/components/download/public/common/download_stats.h
+@@ -145,7 +145,7 @@ enum DownloadCountTypes {
+
+ // Enum for in-progress download DB, used in histogram
+ // "Download.InProgressDB.Counts".
+-enum InProgressDBCountTypes {
++enum InProgressDBCountTypes : uint8_t {
+ // Count of initialization attempts.
+ kInitializationCount = 0,
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_sessions_core_session__service__commands.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_sessions_core_session__service__commands.cc
new file mode 100644
index 000000000000..8dd7c1873e1a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_components_sessions_core_session__service__commands.cc
@@ -0,0 +1,13 @@
+--- src/3rdparty/chromium/components/sessions/core/session_service_commands.cc.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/components/sessions/core/session_service_commands.cc
+@@ -164,8 +164,8 @@ static_assert(ui::SHOW_STATE_END ==
+ // Assert to ensure PersistedWindowShowState is updated if ui::WindowShowState
+ // is changed.
+ static_assert(ui::SHOW_STATE_END ==
+- (static_cast<ui::WindowShowState>(PERSISTED_SHOW_STATE_END) -
+- 2),
++ static_cast<ui::WindowShowState>(PERSISTED_SHOW_STATE_END -
++ 2),
+ "SHOW_STATE_END must equal PERSISTED_SHOW_STATE_END minus the "
+ "deprecated entries");
+ // Returns the show state to store to disk based |state|.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_code__cache_generated__code__cache.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_code__cache_generated__code__cache.h
new file mode 100644
index 000000000000..97aa06394a5c
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_code__cache_generated__code__cache.h
@@ -0,0 +1,12 @@
+--- src/3rdparty/chromium/content/browser/code_cache/generated_code_cache.h.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/content/browser/code_cache/generated_code_cache.h
+@@ -53,7 +53,8 @@ class CONTENT_EXPORT GeneratedCodeCache {
+ enum CodeCacheType { kJavaScript, kWebAssembly };
+
+ // Used for collecting statistics about cache behaviour.
+- enum CacheEntryStatus {
++ // Since it's uploaded to UMA, its values must never change.
++ enum CacheEntryStatus : uint8_t {
+ kHit,
+ kMiss,
+ kClear,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cookies_cookie__monster.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cookies_cookie__monster.h
new file mode 100644
index 000000000000..45fac39ca5cd
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_cookies_cookie__monster.h
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/net/cookies/cookie_monster.h.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/net/cookies/cookie_monster.h
+@@ -314,7 +314,7 @@ class NET_EXPORT CookieMonster : public CookieStore {
+ // of scheme. This enum should not be used when cookies are *cleared*,
+ // because its purpose is to understand if Chrome can deprecate the
+ // ability of HTTP urls to set/overwrite Secure cookies.
+- enum CookieSource {
++ enum CookieSource : uint8_t {
+ COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME = 0,
+ COOKIE_SOURCE_SECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME,
+ COOKIE_SOURCE_NONSECURE_COOKIE_CRYPTOGRAPHIC_SCHEME,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_imagebitmap_image__bitmap__factories.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_imagebitmap_image__bitmap__factories.cc
new file mode 100644
index 000000000000..01b845987b66
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_core_imagebitmap_image__bitmap__factories.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/core/imagebitmap/image_bitmap_factories.cc
+@@ -63,7 +63,7 @@ namespace {
+
+ namespace {
+ // This enum is used in a UMA histogram.
+-enum CreateImageBitmapSource {
++enum CreateImageBitmapSource : uint8_t {
+ kCreateImageBitmapSourceBlob = 0,
+ kCreateImageBitmapSourceImageBitmap = 1,
+ kCreateImageBitmapSourceImageData = 2,
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_image-encoders_image__encoder__utils.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_image-encoders_image__encoder__utils.cc
new file mode 100644
index 000000000000..07a236aced04
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_blink_renderer_platform_image-encoders_image__encoder__utils.cc
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/blink/renderer/platform/image-encoders/image_encoder_utils.cc.orig 2025-04-23 16:00:55 UTC
++++ src/3rdparty/chromium/third_party/blink/renderer/platform/image-encoders/image_encoder_utils.cc
+@@ -16,7 +16,7 @@ namespace {
+
+ namespace {
+ // This enum is used in a UMA histogram; the values should not be changed.
+-enum RequestedImageMimeType {
++enum RequestedImageMimeType : uint8_t {
+ kRequestedImageMimeTypePng = 0,
+ kRequestedImageMimeTypeJpeg = 1,
+ kRequestedImageMimeTypeWebp = 2,