commit:     4864940397a0b5808598d468d63605eb2e0217b1
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Wed Sep  4 07:57:56 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Wed Sep  4 10:20:54 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=48649403

dev-qt/qt-creator: partially fix build with clang19 and gcc15

other.resetter bit with USE=qmldesigner wrt bug #937600 comment #4
still need attention, but adding what we have so far esp. given
qmldesigner is off by default and has limited impact.

Bug: https://bugs.gentoo.org/937600
Closes: https://bugs.gentoo.org/938486
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../files/qt-creator-14.0.1-clang19.patch          | 24 ++++++++++++++++++++++
 .../qt-creator-14.0.1-sol2-clang19-gcc15.patch     | 18 ++++++++++++++++
 dev-qt/qt-creator/qt-creator-14.0.1.ebuild         |  2 ++
 3 files changed, 44 insertions(+)

diff --git a/dev-qt/qt-creator/files/qt-creator-14.0.1-clang19.patch 
b/dev-qt/qt-creator/files/qt-creator-14.0.1-clang19.patch
new file mode 100644
index 000000000000..e296f5bf68be
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-14.0.1-clang19.patch
@@ -0,0 +1,24 @@
+https://bugs.gentoo.org/937600
+
+qt-creator has a workaround for clang (formerly) lacking an implementation
+for __cpp_template_template_args, but the workaround causes issues now that
+it is available.
+
+https://github.com/llvm/llvm-project/pull/89807
+https://github.com/qt-creator/qt-creator/commit/d400dce35d817afd719ffadf8c8f43c8814c05c1
+--- a/src/libs/utils/algorithm.h
++++ b/src/libs/utils/algorithm.h
+@@ -259,5 +259,5 @@
+          typename ResultContainer = C<Result>>
+ Q_REQUIRED_RESULT decltype(auto) transform(SC &&container, F function);
+-#ifdef Q_CC_CLANG
++#if defined(Q_CC_CLANG) && !defined(__cpp_template_template_args)
+ // "Matching of template template-arguments excludes compatible templates"
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0522r0.html 
(P0522R0)
+@@ -810,5 +810,5 @@
+ }
+ 
+-#ifdef Q_CC_CLANG
++#if defined(Q_CC_CLANG) && !defined(__cpp_template_template_args)
+ template<template<typename, typename> class C, // result container type
+          typename SC,                          // input container type

diff --git a/dev-qt/qt-creator/files/qt-creator-14.0.1-sol2-clang19-gcc15.patch 
b/dev-qt/qt-creator/files/qt-creator-14.0.1-sol2-clang19-gcc15.patch
new file mode 100644
index 000000000000..29e600ca33ef
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-14.0.1-sol2-clang19-gcc15.patch
@@ -0,0 +1,18 @@
+https://bugs.gentoo.org/938486
+https://bugs.gentoo.org/937600
+https://bugs.gentoo.org/936924
+https://bugreports.qt.io/browse/QTCREATORBUG-31517
+https://github.com/ThePhD/sol2/commit/d805d027e0a0a7222e936926139f06e23828ce9f
+https://codereview.qt-project.org/c/qt-creator/qt-creator/+/587620
+--- a/src/libs/3rdparty/sol2/include/sol/sol.hpp
++++ b/src/libs/3rdparty/sol2/include/sol/sol.hpp
+@@ -6818,7 +6818,8 @@
+                       static_assert(std::is_constructible<T, 
Args&&...>::value, "T must be constructible with Args");
+ 
+                       *this = nullopt;
+-                      this->construct(std::forward<Args>(args)...);
++                      new (static_cast<void*>(this)) optional(std::in_place, 
std::forward<Args>(args)...);
++                      return **this;
+               }
+ 
+               /// Swaps this optional with the other.

diff --git a/dev-qt/qt-creator/qt-creator-14.0.1.ebuild 
b/dev-qt/qt-creator/qt-creator-14.0.1.ebuild
index 78c4cd5ea7ef..57312a5304e4 100644
--- a/dev-qt/qt-creator/qt-creator-14.0.1.ebuild
+++ b/dev-qt/qt-creator/qt-creator-14.0.1.ebuild
@@ -91,6 +91,8 @@ BDEPEND="
 PATCHES=(
        "${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
        "${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
+       "${FILESDIR}"/${PN}-14.0.1-clang19.patch
+       "${FILESDIR}"/${PN}-14.0.1-sol2-clang19-gcc15.patch
 )
 
 pkg_setup() {

Reply via email to