- Drop patches:

* 0001-Revert-QThread-Unix-move-the-pthread_key-to-a-file-s.patch
  * 0002-Revert-QThread-Unix-revert-to-pthread-destruction-in.patch
- Add patches (kde#499537, QTBUG-133500, QTBUG-130278)
  * 0001-QLocale-try-to-survive-being-created-during-applicat.patch
  * 0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
  * 0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-base?expand=0&rev=130
This commit is contained in:
Christophe Marin 2025-02-06 14:08:32 +00:00 committed by Git OBS Bridge
parent 54d49e2387
commit f13d6f3b43
7 changed files with 164 additions and 355 deletions

View File

@ -0,0 +1,51 @@
From a43c7e58046604796aa69974ea1c5d3e2648c755 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Fri, 24 Jan 2025 11:07:58 -0800
Subject: [PATCH] QLibraryInfo: speed up checking if ":/qt/etc/qt.conf"
resource exists
Go straight for QResource, because this is run very early in Qt's
initialization, usually as a result of some debug message, via
QLoggingRegistry::initializeRules(). This bypasses the need to create
QResourceFileEnginePrivate, QResourceFileEngine, QFileInfoPrivate, and
QFileInfo, all of which would end up in this .isValid() call.
Additionally, I'm making it query in the C locale, which will also avoid
initializing the system & default QLocales. If a resource exists in any
language, the C locale query will find it.
Task-number: QTBUG-133206
Change-Id: I434b498903d793c12d35fffd3e297bfdbdc1b6fe
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit d59e640c868f3db2d661970f3d34a22013d49053)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit ae2502b4ad3d1215211bf4ed44037a40f52a313d)
---
src/corelib/global/qlibraryinfo.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 94f3e60deba..5f6042be29d 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -6,6 +6,7 @@
#include "qstringlist.h"
#include "qfile.h"
#if QT_CONFIG(settings)
+#include "qresource.h"
#include "qsettings.h"
#endif
#include "qlibraryinfo.h"
@@ -103,7 +104,7 @@ static std::unique_ptr<QSettings> findConfiguration()
return std::make_unique<QSettings>(*qtconfManualPath, QSettings::IniFormat);
QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
- if (QFile::exists(qtconfig))
+ if (QResource(qtconfig, QLocale::c()).isValid())
return std::make_unique<QSettings>(qtconfig, QSettings::IniFormat);
#ifdef Q_OS_DARWIN
CFBundleRef bundleRef = CFBundleGetMainBundle();
--
2.48.1

View File

@ -0,0 +1,49 @@
From 12d4bf1ab52748cb84894f50d437064b439e0b7d Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Fri, 24 Jan 2025 10:43:38 -0800
Subject: [PATCH] QLocale: try to survive being created during application shut
down
QLocale is very often accessed during global static destructors, so
let's try and survive if the default has already been destroyed. In that
case, we shall fall back to the C locale.
I've placed the call to systemData(), which updates the system locale,
before the initialization of defaultLocalePrivate, as the initialization
of the latter depends on the former.
Task-number: QTBUG-133206
Change-Id: I48e29b45f9be4514336cfffdf5affa5631a956a3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Albert Astals Cid <aacid@kde.org>
(cherry picked from commit e0a1f491567f2495443babc5aa36a038260f96c6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit bcc0e6124a2ec80df535178d056324433f9ff984)
---
src/corelib/text/qlocale.cpp | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp
index 4f5b5452648..eff083b3d94 100644
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -1112,10 +1112,13 @@ QLocale::QLocale(QStringView name)
*/
QLocale::QLocale()
- : d(*defaultLocalePrivate)
+ : d(c_private())
{
- // Make sure system data is up to date:
- systemData();
+ if (!defaultLocalePrivate.isDestroyed()) {
+ // Make sure system data is up to date:
+ systemData();
+ d = *defaultLocalePrivate;
+ }
}
/*!
--
2.48.1

View File

@ -0,0 +1,49 @@
From 2ef615228bba9a8eb282437bfb7472f925610e89 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <thiago.macieira@intel.com>
Date: Fri, 24 Jan 2025 10:28:30 -0800
Subject: [PATCH] QSystemLocale: bail out if accessed post-destruction
There's little we can do, but a lot of content ends up in QLocale very
late in the execution. Let's at least not crash.
Task-number: QTBUG-133206
Change-Id: I77d41141cb115147f9befffdd5e69dac19c96044
Reviewed-by: Albert Astals Cid <aacid@kde.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
(cherry picked from commit e32f28034ad2383393645777bcd96eab3f696076)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit d5c5f9f3529b384d0d4bea2d51f0ad6a3d57481d)
---
src/corelib/text/qlocale_unix.cpp | 2 ++
src/corelib/text/qlocale_win.cpp | 2 ++
2 files changed, 4 insertions(+)
diff --git a/src/corelib/text/qlocale_unix.cpp b/src/corelib/text/qlocale_unix.cpp
index a934f24c016..91dbb74c207 100644
--- a/src/corelib/text/qlocale_unix.cpp
+++ b/src/corelib/text/qlocale_unix.cpp
@@ -127,6 +127,8 @@ QLocale QSystemLocale::fallbackLocale() const
QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
{
QSystemLocaleData *d = qSystemLocaleData();
+ if (!d)
+ return QVariant();
if (type == LocaleChanged) {
d->readEnvironment();
diff --git a/src/corelib/text/qlocale_win.cpp b/src/corelib/text/qlocale_win.cpp
index 9fdb46a4c92..793751daaf0 100644
--- a/src/corelib/text/qlocale_win.cpp
+++ b/src/corelib/text/qlocale_win.cpp
@@ -828,6 +828,8 @@ QLocale QSystemLocale::fallbackLocale() const
QVariant QSystemLocale::query(QueryType type, QVariant &&in) const
{
QSystemLocalePrivate *d = systemLocalePrivate();
+ if (!d)
+ return QVariant();
switch(type) {
case DecimalPoint:
return d->decimalPoint();
--
2.48.1

View File

@ -1,75 +0,0 @@
From a64e451d703b7a1e2ab10e46e6d7e7dca17795e5 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 5 Feb 2025 10:47:38 +0100
Subject: [PATCH 1/2] Revert "QThread/Unix: move the pthread_key to a
file-scope static"
This reverts commit 38f287443c82510719079a254910424b5e510b25.
---
src/corelib/thread/qthread_unix.cpp | 39 ++++++++---------------------
1 file changed, 11 insertions(+), 28 deletions(-)
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index 0db9bb53031..182240e731e 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -116,12 +116,6 @@ static void destroy_current_thread_data(void *p)
QThreadData *data = static_cast<QThreadData *>(p);
QThread *thread = data->thread.loadAcquire();
-#ifdef Q_OS_APPLE
- // apparent runtime bug: the trivial has been cleared and we end up
- // recreating the QThreadData
- currentThreadData = data;
-#endif
-
if (data->isAdopted) {
// If this is an adopted thread, then QThreadData owns the QThread and
// this is very likely the last reference. These pointers cannot be
@@ -155,32 +149,21 @@ static QThreadData *get_thread_data()
return currentThreadData;
}
-namespace {
-struct PThreadTlsKey
-{
- pthread_key_t key;
- PThreadTlsKey() noexcept { pthread_key_create(&key, destroy_current_thread_data); }
- ~PThreadTlsKey() { pthread_key_delete(key); }
-};
-}
-#if QT_SUPPORTS_INIT_PRIORITY
-Q_DECL_INIT_PRIORITY(10)
-#endif
-static PThreadTlsKey pthreadTlsKey; // intentional non-trivial init & destruction
-
-static void set_thread_data(QThreadData *data) noexcept
+static void set_thread_data(QThreadData *data)
{
if (data) {
- // As noted above: one global static for the thread that called
- // ::exit() (which may not be a Qt thread) and the pthread_key_t for
- // all others.
- static struct Cleanup {
- ~Cleanup() {
- if (QThreadData *data = get_thread_data())
+ static pthread_key_t tls_key;
+ struct TlsKey {
+ TlsKey() noexcept { pthread_key_create(&tls_key, destroy_current_thread_data); }
+ ~TlsKey()
+ {
+ if (QThreadData *data = currentThreadData)
destroy_current_thread_data(data);
+ pthread_key_delete(tls_key);
}
- } currentThreadCleanup;
- pthread_setspecific(pthreadTlsKey.key, data);
+ };
+ static TlsKey currentThreadCleanup;
+ pthread_setspecific(tls_key, data);
}
currentThreadData = data;
}
--
2.48.1

View File

@ -1,277 +0,0 @@
From a4fd6f6114dd837f0af7398f5b1ccc388771dcb8 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 5 Feb 2025 10:47:40 +0100
Subject: [PATCH 2/2] Revert "QThread/Unix: revert to pthread destruction
instead of thread_local"
This reverts commit 5acbda4b06ea5f494b56353ff9df60e1a016b55a.
---
src/corelib/thread/qthread_unix.cpp | 55 +++++++------
src/corelib/thread/qthread_win.cpp | 1 -
.../kernel/qcoreapplication/CMakeLists.txt | 7 --
.../qcoreapplication/tst_qcoreapplication.cpp | 20 +++++
.../tst_static_qcoreapplication.cpp | 81 -------------------
.../gui/kernel/qguiapplication/CMakeLists.txt | 8 --
.../kernel/qapplication/CMakeLists.txt | 8 --
7 files changed, 50 insertions(+), 130 deletions(-)
delete mode 100644 tests/auto/corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index 182240e731e..e81cd4ef880 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -91,22 +91,14 @@ enum { ThreadPriorityResetFlag = 0x80000000 };
// Moreover, this can be racy and having our own thread_local early in
// QThreadPrivate::start() made it even more so. See QTBUG-129846 for analysis.
//
-// There's a good correlation between this C++11 feature and our ability to
-// call QThreadPrivate::cleanup() from destroy_thread_data().
+// For the platforms where this C++11 feature is not properly implemented yet,
+// we fall back to a pthread_setspecific() call and do not perform late
+// clean-up, because then the order of registration of those pthread_specific_t
+// keys matters and Glib uses them too.
//
// https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/libsupc%2B%2B/atexit_thread.cc;hb=releases/gcc-14.2.0#l133
// https://github.com/llvm/llvm-project/blob/llvmorg-19.1.0/libcxxabi/src/cxa_thread_atexit.cpp#L118-L120
-#endif
-//
-// However, we can't destroy the QThreadData for the thread that called
-// ::exit() that early, because a lot of existing content (including in Qt)
-// runs when the static destructors are run and they do depend on QThreadData
-// being extant. Likewise, we can't destroy it at global static destructor time
-// because it's too late: the event dispatcher is usually a class found in a
-// plugin and the plugin's destructors (as well as QtGui's) will have run. So
-// we strike a middle-ground and destroy at function-local static destructor
-// time (see set_thread_data()), because those run after the thread_local ones,
-// before the global ones, and in reverse order of creation.
+#endif // QT_CONFIG(broken_threadlocal_dtors)
// Always access this through the {get,set,clear}_thread_data() functions.
Q_CONSTINIT static thread_local QThreadData *currentThreadData = nullptr;
@@ -149,21 +141,34 @@ static QThreadData *get_thread_data()
return currentThreadData;
}
+#if QT_CONFIG(broken_threadlocal_dtors)
+// The destructors registered with pthread_key_create() below are NOT run from
+// exit(), so we must also use atexit().
+static void destroy_main_thread_data()
+{
+ if (QThreadData *d = get_thread_data())
+ destroy_current_thread_data(d);
+}
+Q_DESTRUCTOR_FUNCTION(destroy_main_thread_data)
+#endif
+
static void set_thread_data(QThreadData *data)
{
if (data) {
- static pthread_key_t tls_key;
- struct TlsKey {
- TlsKey() noexcept { pthread_key_create(&tls_key, destroy_current_thread_data); }
- ~TlsKey()
- {
- if (QThreadData *data = currentThreadData)
- destroy_current_thread_data(data);
- pthread_key_delete(tls_key);
- }
- };
- static TlsKey currentThreadCleanup;
- pthread_setspecific(tls_key, data);
+ if constexpr (QT_CONFIG(broken_threadlocal_dtors)) {
+ static pthread_key_t tls_key;
+ struct TlsKey {
+ TlsKey() { pthread_key_create(&tls_key, destroy_current_thread_data); }
+ ~TlsKey() { pthread_key_delete(tls_key); }
+ };
+ static TlsKey currentThreadCleanup;
+ pthread_setspecific(tls_key, data);
+ } else {
+ struct Cleanup {
+ ~Cleanup() { destroy_current_thread_data(currentThreadData); }
+ };
+ static thread_local Cleanup currentThreadCleanup;
+ }
}
currentThreadData = data;
}
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index 88ba6dc8f62..bc5de38b0ba 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -11,7 +11,6 @@
#include <private/qcoreapplication_p.h>
#include <private/qeventdispatcher_win_p.h>
-#include "qloggingcategory.h"
#include <qt_windows.h>
diff --git a/tests/auto/corelib/kernel/qcoreapplication/CMakeLists.txt b/tests/auto/corelib/kernel/qcoreapplication/CMakeLists.txt
index afe6c22b40f..8f9783088c0 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/CMakeLists.txt
+++ b/tests/auto/corelib/kernel/qcoreapplication/CMakeLists.txt
@@ -37,10 +37,3 @@ endif()
if (ANDROID)
set_property(TARGET tst_qcoreapplication PROPERTY QT_ANDROID_VERSION_NAME ${target_version})
endif()
-
-qt_internal_add_test(tst_static_qcoreapplication
- SOURCES
- tst_static_qcoreapplication.cpp
- LIBRARIES
- Qt::CorePrivate
-)
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index d7dfca824bb..a031e6a54d0 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -1065,6 +1065,26 @@ static void createQObjectOnDestruction()
// QThread) after the last QObject has been destroyed (especially after
// QCoreApplication has).
+#if defined(QT_QGUIAPPLICATIONTEST)
+ // If we've linked to QtGui, we make no representations about there being
+ // global static (not Q_GLOBAL_STATIC) variables that are QObject.
+#elif QT_CONFIG(broken_threadlocal_dtors)
+ // With broken thread-local destructors, we cannot guarantee the ordering
+ // between thread_local destructors and static-lifetime destructors (hence
+ // why they're broken).
+ //
+ // On Unix systems, we use a Q_DESTRUCTOR_FUNCTION in qthread_unix.cpp to
+ // work around the issue, but that means it cannot have run yet.
+ //
+ // This variable is set on Windows too, even though the nature of the
+ // problem is different.
+#else
+ // The thread_local destructor in qthread_unix.cpp has run so the
+ // QAdoptedThread must have been cleaned up.
+ if (theMainThreadIsSet())
+ qFatal("theMainThreadIsSet() returned true; some QObject must have leaked");
+#endif
+
// Before the fixes, this would cause a dangling pointer dereference. If
// the problem comes back, it's possible that the following causes no
// effect.
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp
deleted file mode 100644
index 4f10aaed6e9..00000000000
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (C) 2024 Intel Corporation.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
-
-#include <QtTest/QTest>
-#include <private/qcoreapplication_p.h>
-#include <private/qhooks_p.h>
-
-#ifdef QT_WIDGETS_LIB
-# define tst_Static_QCoreApplication tst_Static_QApplication
-using App = QApplication;
-#elif defined(QT_GUI_LIB)
-# define tst_Static_QCoreApplication tst_Static_QGuiApplication
-using App = QGuiApplication;
-#else
-using App = QCoreApplication;
-#endif
-
-class tst_Static_QCoreApplication : public QObject
-{
- Q_OBJECT
-public:
- ~tst_Static_QCoreApplication() {}
-private Q_SLOTS:
- void staticApplication();
-};
-
-void tst_Static_QCoreApplication::staticApplication()
-{
- // This test only verifies that the destructor, when run inside of exit(),
- // will not crash.
- static int argc = 1;
- const char *argv[] = { staticMetaObject.className(), nullptr };
- static App app(argc, const_cast<char **>(argv));
-}
-
-struct HookManager
-{
- static inline QBasicAtomicInt objectCount = {};
- static void addObject(QObject *o)
- {
- // printf("+ %p = %s\n", o, o->metaObject()->className());
- objectCount.ref();
- Q_UNUSED(o);
- }
- static void removeObject(QObject *o)
- {
- objectCount.deref();
- // printf("- %p\n", o);
- Q_UNUSED(o);
- }
-
- HookManager()
- {
- qtHookData[QHooks::AddQObject] = reinterpret_cast<quintptr>(&addObject);
- qtHookData[QHooks::RemoveQObject] = reinterpret_cast<quintptr>(&removeObject);
- }
-
- ~HookManager()
- {
- qtHookData[QHooks::AddQObject] = 0;
- qtHookData[QHooks::RemoveQObject] = 0;
-
- auto app = qApp;
- if (app)
- qFatal("qApp was not destroyed = %p", app);
-#if !defined(QT_GUI_LIB) && !defined(Q_OS_WIN)
- // Only tested for QtCore/QCoreApplication on Unix. QtGui has statics
- // with QObject that haven't been cleaned up.
- if (int c = objectCount.loadRelaxed())
- qFatal("%d objects still alive", c);
-
- if (void *id = QCoreApplicationPrivate::theMainThreadId.loadRelaxed())
- qFatal("QCoreApplicationPrivate::theMainThreadId is still set - %p", id);
-#endif
- }
-};
-static HookManager hookManager;
-
-QTEST_APPLESS_MAIN(tst_Static_QCoreApplication)
-#include "tst_static_qcoreapplication.moc"
-
diff --git a/tests/auto/gui/kernel/qguiapplication/CMakeLists.txt b/tests/auto/gui/kernel/qguiapplication/CMakeLists.txt
index 109c0813128..6f1f845edd3 100644
--- a/tests/auto/gui/kernel/qguiapplication/CMakeLists.txt
+++ b/tests/auto/gui/kernel/qguiapplication/CMakeLists.txt
@@ -46,11 +46,3 @@ if (APPLE)
set_property(TARGET tst_qguiapplication PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist")
set_property(TARGET tst_qguiapplication PROPERTY PROPERTY MACOSX_BUNDLE TRUE)
endif()
-
-qt_internal_add_test(tst_static_qguiapplication
- SOURCES
- ../../../corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp
- LIBRARIES
- Qt::CorePrivate
- Qt::Gui
-)
diff --git a/tests/auto/widgets/kernel/qapplication/CMakeLists.txt b/tests/auto/widgets/kernel/qapplication/CMakeLists.txt
index 7825ed51c4e..524db06560f 100644
--- a/tests/auto/widgets/kernel/qapplication/CMakeLists.txt
+++ b/tests/auto/widgets/kernel/qapplication/CMakeLists.txt
@@ -15,11 +15,3 @@ add_dependencies(tst_qapplication
desktopsettingsaware_helper
modal_helper
)
-
-qt_internal_add_test(tst_static_qapplication
- SOURCES
- ../../../corelib/kernel/qcoreapplication/tst_static_qcoreapplication.cpp
- LIBRARIES
- Qt::CorePrivate
- Qt::Widgets
-)
--
2.48.1

View File

@ -1,3 +1,14 @@
-------------------------------------------------------------------
Thu Feb 6 13:44:48 UTC 2025 - Christophe Marin <christophe@krop.fr>
- Drop patches:
* 0001-Revert-QThread-Unix-move-the-pthread_key-to-a-file-s.patch
* 0002-Revert-QThread-Unix-revert-to-pthread-destruction-in.patch
- Add patches (kde#499537, QTBUG-133500, QTBUG-130278)
* 0001-QLocale-try-to-survive-being-created-during-applicat.patch
* 0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
* 0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch
-------------------------------------------------------------------
Wed Feb 5 09:54:18 UTC 2025 - Fabian Vogt <fabian@ritter-vogt.de>

View File

@ -42,6 +42,10 @@ URL: https://www.qt.io
Source0: https://download.qt.io/official_releases/qt/%{short_version}/%{real_version}%{tar_suffix}/submodules/%{tar_name}-%{real_version}%{tar_suffix}.tar.xz
Source99: qt6-base-rpmlintrc
# Patches 0-100 are upstream patches #
# https://bugs.kde.org/show_bug.cgi?id=499537
Patch0: 0001-QLocale-try-to-survive-being-created-during-applicat.patch
Patch1: 0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
Patch2: 0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch
# Patches 100-200 are openSUSE and/or non-upstream(able) patches #
# No need to pollute the library dir with object files, install them in the qt6 subfolder
Patch100: 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
@ -49,9 +53,6 @@ Patch100: 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
Patch101: 0001-Use-newer-GCC-on-Leap.patch
%endif
Patch102: 0001-Don-t-strip-binaries-when-building-with-qmake.patch
# https://bugs.kde.org/show_bug.cgi?id=499537
Patch103: 0001-Revert-QThread-Unix-move-the-pthread_key-to-a-file-s.patch
Patch104: 0002-Revert-QThread-Unix-revert-to-pthread-destruction-in.patch
##
BuildRequires: cmake >= 3.18.3
BuildRequires: cups-devel