commit:     f1cb4bf462145013b084e59f912a3c84adcd8726
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec  3 05:29:09 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Dec  3 08:57:58 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f1cb4bf4

dev-qt/qtwebengine: add temporary workaround for a gcc ICE

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../qtwebengine-6.8.1-gcc-ICE-workaround.patch     | 36 ++++++++++++++++++++++
 dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild        |  1 +
 dev-qt/qtwebengine/qtwebengine-6.8.9999.ebuild     |  1 +
 dev-qt/qtwebengine/qtwebengine-6.9999.ebuild       |  1 +
 4 files changed, 39 insertions(+)

diff --git 
a/dev-qt/qtwebengine/files/qtwebengine-6.8.1-gcc-ICE-workaround.patch 
b/dev-qt/qtwebengine/files/qtwebengine-6.8.1-gcc-ICE-workaround.patch
new file mode 100644
index 000000000000..8d35bb8caade
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-6.8.1-gcc-ICE-workaround.patch
@@ -0,0 +1,36 @@
+Patch status: temporary (see below)
+
+Workaround[1] proposed by GCC's upstream for a ICE that can newly occur
+when compiling chromium-122 in Qt 6.8.x (possibly only for gcc15+arm64,
+but could in theory trigger with other arches or gcc14 as well).
+
+May be some time before GCC is fixed and furthermore for it to be
+propagated on users' systems (we're not going to depend on a fixed
+version to enforce the upgrade), so it is simpler to workaround here
+for a while.
+
+Not yet merged as of writing of this, but Qt may include the same
+fix in a future version[2].
+
+Thanks-to: Andrew Pinski <[email protected]>
+Thanks-to: Sam James <[email protected]>
+
+[1] https://gcc.gnu.org/PR117887#c11
+[2] https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/608812
+--- a/src/3rdparty/chromium/base/containers/flat_tree.h
++++ b/src/3rdparty/chromium/base/containers/flat_tree.h
+@@ -491,8 +491,11 @@
+ 
+   // If the compare is not transparent we want to construct key_type once.
+-  template <typename K>
+-  using KeyTypeOrK = std::conditional_t<requires {
++  static constexpr bool key_compare_is_transparent = requires {
+     typename key_compare::is_transparent;
+-  }, K, key_type>;
++  };
++
++  // If the compare is not transparent we want to construct key_type once.
++  template <typename K>
++  using KeyTypeOrK = std::conditional_t<key_compare_is_transparent, K, 
key_type>;
+ };
+ 

diff --git a/dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild 
b/dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild
index ab1d040655e2..28e8e60340b5 100644
--- a/dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-6.8.1.ebuild
@@ -109,6 +109,7 @@ PATCHES=( "${WORKDIR}"/patches/${PN} )
 PATCHES+=(
        # add extras as needed here, may merge in set if carries across versions
        "${FILESDIR}"/${PN}-6.8.1-QTBUG-131156.patch
+       "${FILESDIR}"/${PN}-6.8.1-gcc-ICE-workaround.patch
 )
 
 python_check_deps() {

diff --git a/dev-qt/qtwebengine/qtwebengine-6.8.9999.ebuild 
b/dev-qt/qtwebengine/qtwebengine-6.8.9999.ebuild
index f8a2980a10e7..35016731b7dd 100644
--- a/dev-qt/qtwebengine/qtwebengine-6.8.9999.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-6.8.9999.ebuild
@@ -108,6 +108,7 @@ PATCHES=( "${WORKDIR}"/patches/${PN} )
 
 PATCHES+=(
        # add extras as needed here, may merge in set if carries across versions
+       "${FILESDIR}"/${PN}-6.8.1-gcc-ICE-workaround.patch
 )
 
 python_check_deps() {

diff --git a/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild 
b/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild
index f8a2980a10e7..35016731b7dd 100644
--- a/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-6.9999.ebuild
@@ -108,6 +108,7 @@ PATCHES=( "${WORKDIR}"/patches/${PN} )
 
 PATCHES+=(
        # add extras as needed here, may merge in set if carries across versions
+       "${FILESDIR}"/${PN}-6.8.1-gcc-ICE-workaround.patch
 )
 
 python_check_deps() {

Reply via email to