From 65b8af3bde99cc0c850b1a29d3798a234cc80ef413ca6e837978ac746fda4497 Mon Sep 17 00:00:00 2001
From: Christophe Marin <christophe+obs@krop.fr>
Date: Sun, 9 Mar 2025 16:09:44 +0000
Subject: [PATCH] - Add patch (fixes boo#1218403):   *
 0001-Change-default-settings-for-Qt-packages.patch

OBS-URL: https://build.opensuse.org/package/show/KDE:Qt6/qt6-base?expand=0&rev=132
---
 .gitattributes                                |   23 +
 .gitignore                                    |    1 +
 ...stall-objects-files-into-ARCHDATADIR.patch |   52 +
 ...nge-default-settings-for-Qt-packages.patch |   55 +
 ...ip-binaries-when-building-with-qmake.patch |   39 +
 ...communication-until-encrypted-can-be.patch |  244 +++
 ...temModelPrivate-add-resetting-member.patch |   83 ++
 ...-t-crash-with-next-after-hasNext-ret.patch |   73 +
 ...ed-up-checking-if-qt-etc-qt.conf-res.patch |   51 +
 ...urvive-being-created-during-applicat.patch |   49 +
 ...ail-out-if-accessed-post-destruction.patch |   49 +
 ...Uuid-restore-sorting-order-of-Qt-6.8.patch |  114 ++
 ...e-XI2-input-button-and-motion-events.patch |  167 +++
 0001-Use-newer-GCC-on-Leap.patch              |   54 +
 _constraints                                  |   37 +
 _multibuild                                   |    4 +
 gcc14.patch                                   |   48 +
 qt6-base-rpmlintrc                            |   12 +
 qt6-base.changes                              |  674 +++++++++
 qt6-base.spec                                 | 1311 +++++++++++++++++
 qtbase-everywhere-src-6.7.2.tar.xz            |    3 +
 qtbase-everywhere-src-6.7.3.tar.xz            |    3 +
 qtbase-everywhere-src-6.8.0.tar.xz            |    3 +
 qtbase-everywhere-src-6.8.1.tar.xz            |    3 +
 qtbase-everywhere-src-6.8.2.tar.xz            |    3 +
 25 files changed, 3155 insertions(+)
 create mode 100644 .gitattributes
 create mode 100644 .gitignore
 create mode 100644 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
 create mode 100644 0001-Change-default-settings-for-Qt-packages.patch
 create mode 100644 0001-Don-t-strip-binaries-when-building-with-qmake.patch
 create mode 100644 0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch
 create mode 100644 0001-QAbstractItemModelPrivate-add-resetting-member.patch
 create mode 100644 0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch
 create mode 100644 0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch
 create mode 100644 0001-QLocale-try-to-survive-being-created-during-applicat.patch
 create mode 100644 0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
 create mode 100644 0001-QUuid-restore-sorting-order-of-Qt-6.8.patch
 create mode 100644 0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch
 create mode 100644 0001-Use-newer-GCC-on-Leap.patch
 create mode 100644 _constraints
 create mode 100644 _multibuild
 create mode 100644 gcc14.patch
 create mode 100644 qt6-base-rpmlintrc
 create mode 100644 qt6-base.changes
 create mode 100644 qt6-base.spec
 create mode 100644 qtbase-everywhere-src-6.7.2.tar.xz
 create mode 100644 qtbase-everywhere-src-6.7.3.tar.xz
 create mode 100644 qtbase-everywhere-src-6.8.0.tar.xz
 create mode 100644 qtbase-everywhere-src-6.8.1.tar.xz
 create mode 100644 qtbase-everywhere-src-6.8.2.tar.xz

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9b03811
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,23 @@
+## Default LFS
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.bsp filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gem filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.lz filter=lfs diff=lfs merge=lfs -text
+*.lzma filter=lfs diff=lfs merge=lfs -text
+*.obscpio filter=lfs diff=lfs merge=lfs -text
+*.oxt filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.png filter=lfs diff=lfs merge=lfs -text
+*.rpm filter=lfs diff=lfs merge=lfs -text
+*.tbz filter=lfs diff=lfs merge=lfs -text
+*.tbz2 filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.ttf filter=lfs diff=lfs merge=lfs -text
+*.txz filter=lfs diff=lfs merge=lfs -text
+*.whl filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57affb6
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.osc
diff --git a/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch b/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
new file mode 100644
index 0000000..9b0e34f
--- /dev/null
+++ b/0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
@@ -0,0 +1,52 @@
+From 4e517492a03b6c0b710a2d9a3df05922ac233992 Mon Sep 17 00:00:00 2001
+From: Christophe Marin <christophe@krop.fr>
+Date: Wed, 24 May 2023 11:23:39 +0200
+Subject: [PATCH] CMake: Install objects files into 'ARCHDATADIR'
+
+Change-Id: I917a9ef4d83f93eb5c3e47964bf1814d1b53fdab
+---
+ cmake/QtResourceHelpers.cmake | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/cmake/QtResourceHelpers.cmake b/cmake/QtResourceHelpers.cmake
+index 2df1fed50f..e4f34b5ff1 100644
+--- a/cmake/QtResourceHelpers.cmake
++++ b/cmake/QtResourceHelpers.cmake
+@@ -38,7 +38,7 @@ function(qt_internal_add_resource target resourceName)
+    if (out_targets)
+         qt_install(TARGETS ${out_targets}
+             EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets"
+-            DESTINATION "${INSTALL_LIBDIR}"
++            DESTINATION "${INSTALL_ARCHDATADIR}"
+         )
+         qt_internal_add_targets_to_additional_targets_export_file(
+             TARGETS ${out_targets}
+@@ -47,7 +47,7 @@ function(qt_internal_add_resource target resourceName)
+ 
+         qt_internal_install_resource_pdb_files("${out_targets}")
+         qt_internal_record_rcc_object_files("${target}" "${out_targets}"
+-                                            INSTALL_DIRECTORY "${INSTALL_LIBDIR}")
++                                            INSTALL_DIRECTORY "${INSTALL_ARCHDATADIR}")
+    endif()
+ 
+    if (arg_OUTPUT_TARGETS)
+@@ -77,7 +77,7 @@ function(qt_internal_record_rcc_object_files target resource_targets)
+             # It's comprised of thee following path parts:
+             #
+             # part (1) INSTALL_DIRECTORY.
+-            #          A usual value is '${INSTALL_LIBDIR}/' for libraries
++            #          A usual value is '${INSTALL_ARCHDATADIR}/' for libraries
+             #          and '${INSTALL_QMLDIR}/foo/bar/' for qml plugin resources.
+             #
+             # part (2) the value computed by CMake's computeInstallObjectDir comprised of an
+@@ -128,6 +128,6 @@ function(qt_internal_install_resource_pdb_files objlib_targets)
+             _qt_resource_generated_cpp_relative_path)
+         get_filename_component(rel_obj_file_dir "${generated_cpp_file_relative_path}" DIRECTORY)
+         qt_internal_install_pdb_files(${target}
+-            "${INSTALL_LIBDIR}/objects-$<CONFIG>/${target}/${rel_obj_file_dir}")
++            "${INSTALL_ARCHDATADIR}/objects-$<CONFIG>/${target}/${rel_obj_file_dir}")
+     endforeach()
+ endfunction()
+-- 
+2.40.1
+
diff --git a/0001-Change-default-settings-for-Qt-packages.patch b/0001-Change-default-settings-for-Qt-packages.patch
new file mode 100644
index 0000000..20161dd
--- /dev/null
+++ b/0001-Change-default-settings-for-Qt-packages.patch
@@ -0,0 +1,55 @@
+From 7fc927ca12025a63bf063ca26046a1811313b1c2 Mon Sep 17 00:00:00 2001
+From: Christophe Marin <christophe@krop.fr>
+Date: Sun, 9 Mar 2025 10:27:34 +0100
+Subject: [PATCH] Change default settings for Qt packages
+
+- Install examples sources by default
+- Enable QT_SKIP_AUTO_PLUGIN_INCLUSION and QT_SKIP_AUTO_QML_PLUGIN_INCLUSION by default
+This prevents having build time dependencies on plugins needlessly
+---
+ cmake/QtBuildInternalsExtra.cmake.in | 1 +
+ cmake/QtPlugins.cmake.in             | 2 +-
+ cmake/QtPostProcessHelpers.cmake     | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/QtBuildInternalsExtra.cmake.in b/cmake/QtBuildInternalsExtra.cmake.in
+index 8985f81..b6eb039 100644
+--- a/cmake/QtBuildInternalsExtra.cmake.in
++++ b/cmake/QtBuildInternalsExtra.cmake.in
+@@ -83,6 +83,7 @@ set(QT_SOURCE_TREE "@QT_SOURCE_TREE@" CACHE PATH
+ # Propagate decision of building tests and examples to other repositories.
+ set(QT_BUILD_TESTS @QT_BUILD_TESTS@ CACHE BOOL "Build the testing tree.")
+ set(QT_BUILD_EXAMPLES @QT_BUILD_EXAMPLES@ CACHE BOOL "Build Qt examples")
++set(QT_INSTALL_EXAMPLES_SOURCES @QT_INSTALL_EXAMPLES_SOURCES@ CACHE BOOL "Install Qt examples sources")
+ set(QT_BUILD_BENCHMARKS @QT_BUILD_BENCHMARKS@ CACHE BOOL "Build Qt Benchmarks")
+ set(QT_BUILD_MANUAL_TESTS @QT_BUILD_MANUAL_TESTS@ CACHE BOOL "Build Qt manual tests")
+ set(QT_BUILD_MINIMAL_STATIC_TESTS @QT_BUILD_MINIMAL_STATIC_TESTS@ CACHE BOOL
+diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in
+index e668a4c..d086316 100644
+--- a/cmake/QtPlugins.cmake.in
++++ b/cmake/QtPlugins.cmake.in
+@@ -6,7 +6,7 @@ include_guard(DIRECTORY)
+ 
+ # Distributions should probably change this default.
+ if(NOT DEFINED QT_SKIP_AUTO_PLUGIN_INCLUSION)
+-    set(QT_SKIP_AUTO_PLUGIN_INCLUSION OFF)
++    set(QT_SKIP_AUTO_PLUGIN_INCLUSION ON)
+ endif()
+ 
+ if(NOT QT_NO_CREATE_TARGETS AND NOT QT_SKIP_AUTO_PLUGIN_INCLUSION)
+diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake
+index 6ecb0c4..6fd8e75 100644
+--- a/cmake/QtPostProcessHelpers.cmake
++++ b/cmake/QtPostProcessHelpers.cmake
+@@ -507,7 +507,7 @@ function(qt_internal_create_plugins_auto_inclusion_files)
+ 
+ # Distributions should probably change this default.
+ if(NOT DEFINED QT_SKIP_AUTO_QML_PLUGIN_INCLUSION)
+-    set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION OFF)
++    set(QT_SKIP_AUTO_QML_PLUGIN_INCLUSION ON)
+ endif()
+ 
+ set(__qt_qml_plugins_config_file_list \"\")
+-- 
+2.48.1
+
diff --git a/0001-Don-t-strip-binaries-when-building-with-qmake.patch b/0001-Don-t-strip-binaries-when-building-with-qmake.patch
new file mode 100644
index 0000000..8078ebe
--- /dev/null
+++ b/0001-Don-t-strip-binaries-when-building-with-qmake.patch
@@ -0,0 +1,39 @@
+From e43300d226ca98dbda1b1b69c3a1aaf8543f0a16 Mon Sep 17 00:00:00 2001
+From: Christophe Marin <christophe@krop.fr>
+Date: Wed, 4 Oct 2023 09:24:42 +0200
+Subject: [PATCH] Don't strip binaries when building with qmake
+
+Change-Id: I134f83b0a4fb1636d15f527585f8e9c9892f9057
+---
+ mkspecs/common/gcc-base.conf | 2 ++
+ mkspecs/common/linux.conf    | 4 ++--
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
+index ae58326289..3a686cf18c 100644
+--- a/mkspecs/common/gcc-base.conf
++++ b/mkspecs/common/gcc-base.conf
+@@ -31,6 +31,8 @@
+ # you can use the manual test in tests/manual/mkspecs.
+ #
+ 
++CONFIG += nostrip
++
+ QMAKE_CFLAGS_OPTIMIZE      = -O2
+ QMAKE_CFLAGS_OPTIMIZE_FULL = -O3
+ QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og
+diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
+index 544cc22715..b809cffeeb 100644
+--- a/mkspecs/common/linux.conf
++++ b/mkspecs/common/linux.conf
+@@ -48,5 +48,5 @@ QMAKE_OBJCOPY           = objcopy
+ QMAKE_NM                = nm -P
+ QMAKE_RANLIB            =
+ 
+-QMAKE_STRIP             = strip
+-QMAKE_STRIPFLAGS_LIB   += --strip-unneeded
++QMAKE_STRIP             =
++QMAKE_STRIPFLAGS_LIB   +=
+-- 
+2.42.0
+
diff --git a/0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch b/0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch
new file mode 100644
index 0000000..617f0f8
--- /dev/null
+++ b/0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch
@@ -0,0 +1,244 @@
+From 2b1e36e183ce75c224305c7a94457b92f7a5cf58 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io>
+Date: Tue, 25 Jun 2024 17:09:35 +0200
+Subject: [PATCH] HTTP2: Delay any communication until encrypted() can be
+ responded to
+
+We have the encrypted() signal that lets users do extra checks on the
+established connection. It is emitted as BlockingQueued, so the HTTP
+thread stalls until it is done emitting. Users can potentially call
+abort() on the QNetworkReply at that point, which is passed as a Queued
+call back to the HTTP thread. That means that any currently queued
+signal emission will be processed before the abort() call is processed.
+
+In the case of HTTP2 it is a little special since it is multiplexed and
+the code is built to start requests as they are available. This means
+that, while the code worked fine for HTTP1, since one connection only
+has one request, it is not working for HTTP2, since we try to send more
+requests in-between the encrypted() signal and the abort() call.
+
+This patch changes the code to delay any communication until the
+encrypted() signal has been emitted and processed, for HTTP2 only.
+It's done by adding a few booleans, both to know that we have to return
+early and so we can keep track of what events arose and what we need to
+resume once enough time has passed that any abort() call must have been
+processed.
+
+Fixes: QTBUG-126610
+Pick-to: 6.5 6.2 5.15 5.12
+Change-Id: Ic25a600c278203256e35f541026f34a8783235ae
+Reviewed-by: Marc Mutz <marc.mutz@qt.io>
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit b1e75376cc3adfc7da5502a277dfe9711f3e0536)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+(cherry picked from commit 0fb43e4395da34d561814242a0186999e4956e28)
+---
+ src/network/access/qhttp2protocolhandler.cpp  |  6 +--
+ .../access/qhttpnetworkconnectionchannel.cpp  | 48 ++++++++++++++++++-
+ .../access/qhttpnetworkconnectionchannel_p.h  |  6 +++
+ tests/auto/network/access/http2/tst_http2.cpp | 44 +++++++++++++++++
+ 4 files changed, 99 insertions(+), 5 deletions(-)
+
+diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
+index 0abd99b9bc..3631b13dc8 100644
+--- a/src/network/access/qhttp2protocolhandler.cpp
++++ b/src/network/access/qhttp2protocolhandler.cpp
+@@ -303,12 +303,12 @@ bool QHttp2ProtocolHandler::sendRequest()
+         }
+     }
+ 
+-    if (!prefaceSent && !sendClientPreface())
+-        return false;
+-
+     if (!requests.size())
+         return true;
+ 
++    if (!prefaceSent && !sendClientPreface())
++        return false;
++
+     m_channel->state = QHttpNetworkConnectionChannel::WritingState;
+     // Check what was promised/pushed, maybe we do not have to send a request
+     // and have a response already?
+diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
+index 6766989690..1e4161d1fd 100644
+--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
++++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
+@@ -209,6 +209,10 @@ void QHttpNetworkConnectionChannel::abort()
+ bool QHttpNetworkConnectionChannel::sendRequest()
+ {
+     Q_ASSERT(protocolHandler);
++    if (waitingForPotentialAbort) {
++        needInvokeSendRequest = true;
++        return false; // this return value is unused
++    }
+     return protocolHandler->sendRequest();
+ }
+ 
+@@ -221,21 +225,28 @@ bool QHttpNetworkConnectionChannel::sendRequest()
+ void QHttpNetworkConnectionChannel::sendRequestDelayed()
+ {
+     QMetaObject::invokeMethod(this, [this] {
+-        Q_ASSERT(protocolHandler);
+         if (reply)
+-            protocolHandler->sendRequest();
++            sendRequest();
+     }, Qt::ConnectionType::QueuedConnection);
+ }
+ 
+ void QHttpNetworkConnectionChannel::_q_receiveReply()
+ {
+     Q_ASSERT(protocolHandler);
++    if (waitingForPotentialAbort) {
++        needInvokeReceiveReply = true;
++        return;
++    }
+     protocolHandler->_q_receiveReply();
+ }
+ 
+ void QHttpNetworkConnectionChannel::_q_readyRead()
+ {
+     Q_ASSERT(protocolHandler);
++    if (waitingForPotentialAbort) {
++        needInvokeReadyRead = true;
++        return;
++    }
+     protocolHandler->_q_readyRead();
+ }
+ 
+@@ -1239,7 +1250,18 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
+         if (!h2RequestsToSend.isEmpty()) {
+             // Similar to HTTP/1.1 counterpart below:
+             const auto &pair = std::as_const(h2RequestsToSend).first();
++            waitingForPotentialAbort = true;
+             emit pair.second->encrypted();
++
++            // We don't send or handle any received data until any effects from
++            // emitting encrypted() have been processed. This is necessary
++            // because the user may have called abort(). We may also abort the
++            // whole connection if the request has been aborted and there is
++            // no more requests to send.
++            QMetaObject::invokeMethod(this,
++                                      &QHttpNetworkConnectionChannel::checkAndResumeCommunication,
++                                      Qt::QueuedConnection);
++
+             // In case our peer has sent us its settings (window size, max concurrent streams etc.)
+             // let's give _q_receiveReply a chance to read them first ('invokeMethod', QueuedConnection).
+         }
+@@ -1257,6 +1279,28 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
+     QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection);
+ }
+ 
++
++void QHttpNetworkConnectionChannel::checkAndResumeCommunication()
++{
++    Q_ASSERT(connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2
++             || connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2Direct);
++
++    // Because HTTP/2 requires that we send a SETTINGS frame as the first thing we do, and respond
++    // to a SETTINGS frame with an ACK, we need to delay any handling until we can ensure that any
++    // effects from emitting encrypted() have been processed.
++    // This function is called after encrypted() was emitted, so check for changes.
++
++    if (!reply && h2RequestsToSend.isEmpty())
++        abort();
++    waitingForPotentialAbort = false;
++    if (needInvokeReadyRead)
++        _q_readyRead();
++    if (needInvokeReceiveReply)
++        _q_receiveReply();
++    if (needInvokeSendRequest)
++        sendRequest();
++}
++
+ void QHttpNetworkConnectionChannel::requeueHttp2Requests()
+ {
+     const auto h2RequestsToSendCopy = std::exchange(h2RequestsToSend, {});
+diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
+index c42290feca..061f20fd42 100644
+--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
++++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
+@@ -74,6 +74,10 @@ public:
+     QAbstractSocket *socket;
+     bool ssl;
+     bool isInitialized;
++    bool waitingForPotentialAbort = false;
++    bool needInvokeReceiveReply = false;
++    bool needInvokeReadyRead = false;
++    bool needInvokeSendRequest = false;
+     ChannelState state;
+     QHttpNetworkRequest request; // current request, only used for HTTP
+     QHttpNetworkReply *reply; // current reply for this request, only used for HTTP
+@@ -146,6 +150,8 @@ public:
+     void closeAndResendCurrentRequest();
+     void resendCurrentRequest();
+ 
++    void checkAndResumeCommunication();
++
+     bool isSocketBusy() const;
+     bool isSocketWriting() const;
+     bool isSocketWaiting() const;
+diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp
+index 00efbc9832..c02e7b7b5b 100644
+--- a/tests/auto/network/access/http2/tst_http2.cpp
++++ b/tests/auto/network/access/http2/tst_http2.cpp
+@@ -106,6 +106,8 @@ private slots:
+ 
+     void duplicateRequestsWithAborts();
+ 
++    void abortOnEncrypted();
++
+ protected slots:
+     // Slots to listen to our in-process server:
+     void serverStarted(quint16 port);
+@@ -1479,6 +1481,48 @@ void tst_Http2::duplicateRequestsWithAborts()
+     QCOMPARE(finishedCount, ExpectedSuccessfulRequests);
+ }
+ 
++void tst_Http2::abortOnEncrypted()
++{
++#if !QT_CONFIG(ssl)
++    QSKIP("TLS support is needed for this test");
++#else
++    clearHTTP2State();
++    serverPort = 0;
++
++    ServerPtr targetServer(newServer(defaultServerSettings, H2Type::h2Direct));
++
++    QMetaObject::invokeMethod(targetServer.data(), "startServer", Qt::QueuedConnection);
++    runEventLoop();
++
++    nRequests = 1;
++    nSentRequests = 0;
++
++    const auto url = requestUrl(H2Type::h2Direct);
++    QNetworkRequest request(url);
++    request.setAttribute(QNetworkRequest::Http2DirectAttribute, true);
++
++    std::unique_ptr<QNetworkReply> reply{manager->get(request)};
++    reply->ignoreSslErrors();
++    connect(reply.get(), &QNetworkReply::encrypted, reply.get(), [reply = reply.get()](){
++        reply->abort();
++    });
++    connect(reply.get(), &QNetworkReply::errorOccurred, this, &tst_Http2::replyFinishedWithError);
++
++    runEventLoop();
++    STOP_ON_FAILURE
++
++    QCOMPARE(nRequests, 0);
++    QCOMPARE(reply->error(), QNetworkReply::OperationCanceledError);
++
++    const bool res = QTest::qWaitFor(
++            [this, server = targetServer.get()]() {
++                return serverGotSettingsACK || prefaceOK || nSentRequests > 0;
++            },
++            500);
++    QVERIFY(!res);
++#endif // QT_CONFIG(ssl)
++}
++
+ void tst_Http2::serverStarted(quint16 port)
+ {
+     serverPort = port;
+-- 
+2.45.2
+
diff --git a/0001-QAbstractItemModelPrivate-add-resetting-member.patch b/0001-QAbstractItemModelPrivate-add-resetting-member.patch
new file mode 100644
index 0000000..00e1bee
--- /dev/null
+++ b/0001-QAbstractItemModelPrivate-add-resetting-member.patch
@@ -0,0 +1,83 @@
+From 9785bc77eb4967c4a791eef1745c0c4f2b0db95a Mon Sep 17 00:00:00 2001
+From: Mitch Curtis <mitch.curtis@qt.io>
+Date: Tue, 24 Sep 2024 10:40:37 +0800
+Subject: [PATCH] QAbstractItemModelPrivate: add resetting member
+
+This allows QQmlDelegateModel to know if a QAbstractItemModel subclass
+is in the process of a reset, which it can't know if beginResetModel
+was called in the model's constructor.
+
+As an added bonus, it also allows us to warn the user if they call
+endResetModel with a previous call to beginResetModel.
+
+Task-number: QTBUG-125053
+Task-number: QTBUG-127340
+Pick-to: 6.5
+Change-Id: I7d1fb983e9bf868c48472624ad945ae158115943
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit 9d8663c18e88cb0b5a65f86cfd7726f3d31e04d6)
+(cherry picked from commit 2ea3abed0125d81ca4f3bacb9650db7314657332)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+---
+ src/corelib/itemmodels/qabstractitemmodel.cpp | 13 +++++++++++++
+ src/corelib/itemmodels/qabstractitemmodel_p.h |  4 ++++
+ 2 files changed, 17 insertions(+)
+
+diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
+index 5b9b215..3d4d566 100644
+--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
++++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
+@@ -3400,6 +3400,13 @@ void QAbstractItemModel::endMoveColumns()
+ */
+ void QAbstractItemModel::beginResetModel()
+ {
++    Q_D(QAbstractItemModel);
++    if (d->resetting) {
++        qWarning() << "beginResetModel called on" << this << "without calling endResetModel first";
++        // Warn, but don't return early in case user code relies on the incorrect behavior.
++    }
++
++    d->resetting = true;
+     emit modelAboutToBeReset(QPrivateSignal());
+ }
+ 
+@@ -3417,8 +3424,14 @@ void QAbstractItemModel::beginResetModel()
+ void QAbstractItemModel::endResetModel()
+ {
+     Q_D(QAbstractItemModel);
++    if (!d->resetting) {
++        qWarning() << "endResetModel called on" << this << "without calling beginResetModel first";
++        // Warn, but don't return early in case user code relies on the incorrect behavior.
++    }
++
+     d->invalidatePersistentIndexes();
+     resetInternalData();
++    d->resetting = false;
+     emit modelReset(QPrivateSignal());
+ }
+ 
+diff --git a/src/corelib/itemmodels/qabstractitemmodel_p.h b/src/corelib/itemmodels/qabstractitemmodel_p.h
+index e34dc32..c2113fd 100644
+--- a/src/corelib/itemmodels/qabstractitemmodel_p.h
++++ b/src/corelib/itemmodels/qabstractitemmodel_p.h
+@@ -45,6 +45,8 @@ public:
+     QAbstractItemModelPrivate();
+     ~QAbstractItemModelPrivate();
+ 
++    static const QAbstractItemModelPrivate *get(const QAbstractItemModel *model) { return model->d_func(); }
++
+     void removePersistentIndexData(QPersistentModelIndexData *data);
+     void movePersistentIndexes(const QList<QPersistentModelIndexData *> &indexes, int change, const QModelIndex &parent,
+                                Qt::Orientation orientation);
+@@ -115,6 +117,8 @@ public:
+         void insertMultiAtEnd(const QModelIndex& key, QPersistentModelIndexData *data);
+     } persistent;
+ 
++    bool resetting = false;
++
+     static const QHash<int,QByteArray> &defaultRoleNames();
+     static bool isVariantLessThan(const QVariant &left, const QVariant &right,
+                                   Qt::CaseSensitivity cs = Qt::CaseSensitive, bool isLocaleAware = false);
+-- 
+2.46.1
+
diff --git a/0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch b/0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch
new file mode 100644
index 0000000..31f68bb
--- /dev/null
+++ b/0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch
@@ -0,0 +1,73 @@
+From 55a8050d1e762befeeb5ba557f458b0092cbb44b Mon Sep 17 00:00:00 2001
+From: Ahmad Samir <a.samirh78@gmail.com>
+Date: Wed, 16 Oct 2024 19:26:25 +0300
+Subject: [PATCH] QDirIterator: don't crash with next() after hasNext()
+ returned false
+
+The typical use-case is calling hasNext() first before using next, but
+the API docs say that calling next() even when hasNext() is false,
+should just return an empty string.
+
+[ChangeLog][QtCore][QDirIterator] Fixed a crash that happened if you
+called next() after hasNext() had already returned false. Ideally you
+should never call next() without first calling hasNext() as that could
+lead to unexpected results (for example, infinite loops).
+
+Fixes: QTBUG-130142
+Change-Id: If0a8b1fe7dbd13b45793409a7a241e53c7257f24
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit c7691842f743f568a073582c8f0cacd6ee188f98)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+---
+ src/corelib/io/qdiriterator.cpp                       |  5 +++++
+ .../auto/corelib/io/qdiriterator/tst_qdiriterator.cpp | 11 +++++++++++
+ 2 files changed, 16 insertions(+)
+
+diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
+index faea8088cb..7d7fe15684 100644
+--- a/src/corelib/io/qdiriterator.cpp
++++ b/src/corelib/io/qdiriterator.cpp
+@@ -103,6 +103,11 @@ public:
+ 
+     void advance()
+     {
++        // Match the behavior of advance() from before porting to QDirListing,
++        // that is, even if hasNext() returns false, calling next() returns an
++        // empty string without crashing. QTBUG-130142
++        if (it == lister.end())
++            return;
+         currentFileInfo = nextFileInfo;
+         if (++it != lister.end()) {
+             nextFileInfo = it->fileInfo();
+diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
+index a0a8917c27..b739f0eb11 100644
+--- a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
++++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
+@@ -86,6 +86,8 @@ private slots:
+     void hiddenDirs_hiddenFiles();
+ #endif
+ 
++    void hasNextFalseNoCrash();
++
+ private:
+     QSharedPointer<QTemporaryDir> m_dataDir;
+ };
+@@ -642,6 +644,15 @@ void tst_QDirIterator::hiddenDirs_hiddenFiles()
+ }
+ #endif // Q_OS_WIN
+ 
++void tst_QDirIterator::hasNextFalseNoCrash()
++{
++    QDirIterator iter(u"empty"_s, QDir::NoDotAndDotDot);
++    // QTBUG-130142
++    // No crash if you call next() after hasNext() returned false
++    QVERIFY(!iter.hasNext());
++    QVERIFY(iter.next().isEmpty());
++}
++
+ QTEST_MAIN(tst_QDirIterator)
+ 
+ #include "tst_qdiriterator.moc"
+-- 
+2.47.0
+
diff --git a/0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch b/0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch
new file mode 100644
index 0000000..30e599c
--- /dev/null
+++ b/0001-QLibraryInfo-speed-up-checking-if-qt-etc-qt.conf-res.patch
@@ -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
+
diff --git a/0001-QLocale-try-to-survive-being-created-during-applicat.patch b/0001-QLocale-try-to-survive-being-created-during-applicat.patch
new file mode 100644
index 0000000..253c0e5
--- /dev/null
+++ b/0001-QLocale-try-to-survive-being-created-during-applicat.patch
@@ -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
+
diff --git a/0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch b/0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
new file mode 100644
index 0000000..5fa2be8
--- /dev/null
+++ b/0001-QSystemLocale-bail-out-if-accessed-post-destruction.patch
@@ -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
+
diff --git a/0001-QUuid-restore-sorting-order-of-Qt-6.8.patch b/0001-QUuid-restore-sorting-order-of-Qt-6.8.patch
new file mode 100644
index 0000000..e7fcc99
--- /dev/null
+++ b/0001-QUuid-restore-sorting-order-of-Qt-6.8.patch
@@ -0,0 +1,114 @@
+From 3e8037af63821123eb392f42d717d10f741fb384 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Sat, 19 Oct 2024 21:28:48 -0700
+Subject: [PATCH] QUuid: restore sorting order of Qt < 6.8
+
+This brings back and adapted version of the sorting code that was
+removed by commit 15f753ca5a60b5273d243f528978e25c28a9b56d. The issue,
+as shown in the test, is that we store data1, data2, and data3 as
+native-endian integers, so the bitcasts in the new code cause them to
+become mangled in little-endian platforms.
+
+Since this is a weird behavior and we'll be changing the sorting order
+in Qt 7 anyway, I've left a warning for us to think about it at the
+time.
+
+[ChangeLog][QtCore][QUuid] Fixed a regression that caused QUuid sorting
+order to change for some UUIDs, compared to Qt 6.7 and earlier versions.
+
+Fixes: QTBUG-130155
+Pick-to: 6.8
+Change-Id: I5eeb7b36bfc5ed7218e1fffd6a773c582ad0f6f4
+Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
+---
+ src/corelib/plugin/quuid.cpp                  |  3 +++
+ src/corelib/plugin/quuid.h                    | 12 +++++++++---
+ tests/auto/corelib/plugin/quuid/tst_quuid.cpp |  9 +++++++++
+ 3 files changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
+index af7c07d..5cbae60 100644
+--- a/src/corelib/plugin/quuid.cpp
++++ b/src/corelib/plugin/quuid.cpp
+@@ -33,6 +33,9 @@ void _q_toHex(char *&dst, Integral value)
+     }
+ }
+ 
++#if QT_VERSION_MAJOR == 7
++#  warning Consider storing the UUID as simple bytes, not as {uint, ushort, short, array}
++#endif
+ template <class Integral>
+ bool _q_fromHex(const char *&src, Integral &value)
+ {
+diff --git a/src/corelib/plugin/quuid.h b/src/corelib/plugin/quuid.h
+index 435b7bb..0597445 100644
+--- a/src/corelib/plugin/quuid.h
++++ b/src/corelib/plugin/quuid.h
+@@ -132,7 +132,14 @@ private:
+     static constexpr Qt::strong_ordering
+     compareThreeWay_helper(const QUuid &lhs, const QUuid &rhs) noexcept
+     {
+-#if defined(__cpp_lib_bit_cast) && defined(QT_SUPPORTS_INT128)
++#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
++        if (const auto c = Qt::compareThreeWay(lhs.data1, rhs.data1); !is_eq(c))
++            return c;
++        if (const auto c = Qt::compareThreeWay(lhs.data2, rhs.data2); !is_eq(c))
++            return c;
++        if (const auto c = Qt::compareThreeWay(lhs.data3, rhs.data3); !is_eq(c))
++            return c;
++#elif defined(__cpp_lib_bit_cast) && defined(QT_SUPPORTS_INT128)
+         quint128 lu = qFromBigEndian(std::bit_cast<quint128>(lhs));
+         quint128 ru = qFromBigEndian(std::bit_cast<quint128>(rhs));
+         return Qt::compareThreeWay(lu, ru);
+@@ -144,13 +151,12 @@ private:
+         };
+         if (const auto c = Qt::compareThreeWay(make_int(lhs), make_int(rhs)); !is_eq(c))
+             return c;
+-
++#endif
+         for (unsigned i = 0; i < sizeof(lhs.data4); ++i) {
+             if (const auto c = Qt::compareThreeWay(lhs.data4[i], rhs.data4[i]); !is_eq(c))
+                 return c;
+         }
+         return Qt::strong_ordering::equal;
+-#endif
+     }
+     friend constexpr Qt::strong_ordering compareThreeWay(const QUuid &lhs, const QUuid &rhs) noexcept
+     {
+diff --git a/tests/auto/corelib/plugin/quuid/tst_quuid.cpp b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
+index 8b75817..f1b96e6 100644
+--- a/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
++++ b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
+@@ -465,6 +465,7 @@ void tst_QUuid::ordering_data()
+ #define AFTER_NCS(x) ROW(minNCS, x, less)
+     AFTER_NCS(ncs000_0000_0010);
+     AFTER_NCS(ncs000_0000_0100);
++    ROW(ncs000_0000_0010, ncs000_0000_0100, less);
+     AFTER_NCS(ncs000_0000_1000);
+     AFTER_NCS(ncs000_0001_0000);
+     AFTER_NCS(ncs000_0010_0000);
+@@ -492,6 +493,13 @@ void tst_QUuid::ordering_data()
+     AFTER_R(ones);
+ #undef AFTER_R
+ #undef ROW
++
++    // due to the way we store data1,2,3 in memory, the ordering will flip
++    QTest::newRow("qt7-integer-portions")
++            << QUuid{0x01000002, 0x0000, 0x0000, 0, 0, 0, 0, 0, 0, 0, 0}
++            << QUuid{0x02000001, 0x0000, 0x0000, 0, 0, 0, 0, 0, 0, 0, 0}
++            << (QSysInfo::ByteOrder == QSysInfo::BigEndian || QT_VERSION_MAJOR < 7 ?
++                    Qt::strong_ordering::less : Qt::strong_ordering::greater);
+ }
+ 
+ void tst_QUuid::ordering()
+@@ -500,6 +508,7 @@ void tst_QUuid::ordering()
+     QFETCH(const QUuid, rhs);
+     QFETCH(const Qt::strong_ordering, expected);
+ 
++    QCOMPARE(qCompareThreeWay(lhs, rhs), expected);
+     QT_TEST_ALL_COMPARISON_OPS(lhs, rhs, expected);
+ }
+ 
+-- 
+2.47.0
+
diff --git a/0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch b/0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch
new file mode 100644
index 0000000..b3c8a3c
--- /dev/null
+++ b/0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch
@@ -0,0 +1,167 @@
+From 1337291b725b0ab5958191f35ac69b8fabf0a510 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Tue, 1 Oct 2024 12:46:30 +0200
+Subject: [PATCH] Revert "xcb: handle XI2 input button and motion events from
+ slave devices"
+
+This reverts commit b71be292780b858f2c55ce92601452e2ea946de2, which causes a regression when using mouse wheel and moving cursor together
+on scroll bar for some qt applications, like qutebrowser and
+qbittorrent.
+
+Fixes: QTBUG-129509
+Fixes: QTBUG-129514
+Task-number: QTBUG-110841
+Pick-to: 6.8.0 6.8 6.7 6.5 6.2 5.15
+Change-Id: I703158874413a1306ea99217bced4ba38382f543
+---
+ .../platforms/xcb/qxcbconnection_xi2.cpp      | 121 +++---------------
+ 1 file changed, 16 insertions(+), 105 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+index 55c226d..4f62a18 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+@@ -682,96 +682,23 @@ static inline qreal fixed1616ToReal(xcb_input_fp1616_t val)
+     return qreal(val) / 0x10000;
+ }
+ 
+-//implementation is ported from https://codereview.qt-project.org/c/qt/qtbase/+/231552/12/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp#558
+-namespace {
+-
+-/*! \internal
+-
+- Qt listens for XIAllDevices to avoid losing mouse events. This function
+- ensures that we don't process the same event twice: from a slave device and
+- then again from a master device.
+-
+- In a normal use case (e.g. mouse press and release inside a window), we will
+- drop events from master devices as duplicates. Other advantage of processing
+- events from slave devices is that they don't share button state. All buttons
+- on a master device share the state.
+-
+- Examples of special cases:
+-
+-\list
+-
+-\li During system move/resize, window manager (_NET_WM_MOVERESIZE) grabs the
+-   master pointer, in this case we process the matching release from the slave
+-   device. A master device event is not sent by the server, hence no duplicate
+-   event to drop. If we listened for XIAllMasterDevices instead, we would never
+-   see a release event in this case.
+-
+-\li If we dismiss a context menu by clicking somewhere outside a Qt application,
+-   we will process the mouse press from the master pointer as that is the
+-   device we are grabbing. We are not grabbing slave devices (grabbing on the
+-   slave device is buggy according to 19d289ab1b5bde3e136765e5432b5c7d004df3a4).
+-   And since the event occurs outside our window, the slave device event is
+-   not sent to us by the server, hence no duplicate event to drop.
+-
+-\endlist
+-*/
+-bool isDuplicateEvent(xcb_ge_event_t *event)
+-{
+-    Q_ASSERT(event);
+-
+-    struct qXIEvent {
+-        bool isValid = false;
+-        uint16_t sourceid;
+-        uint8_t evtype;
+-        uint32_t detail;
+-        int32_t root_x;
+-        int32_t root_y;
+-    };
+-    static qXIEvent lastSeenEvent;
+-
+-    bool isDuplicate = false;
+-    auto *xiDeviceEvent = reinterpret_cast<qt_xcb_input_device_event_t *>(event);
+-    if (lastSeenEvent.isValid) {
+-        isDuplicate = lastSeenEvent.sourceid == xiDeviceEvent->sourceid &&
+-                lastSeenEvent.evtype == xiDeviceEvent->event_type &&
+-                lastSeenEvent.detail == xiDeviceEvent->detail &&
+-                lastSeenEvent.root_x == xiDeviceEvent->root_x &&
+-                lastSeenEvent.root_y == xiDeviceEvent->root_y;
+-    } else {
+-        lastSeenEvent.isValid = true;
+-    }
+-    lastSeenEvent.sourceid = xiDeviceEvent->sourceid;
+-    lastSeenEvent.evtype = xiDeviceEvent->event_type;
+-    lastSeenEvent.detail = xiDeviceEvent->detail;
+-    lastSeenEvent.root_x = xiDeviceEvent->root_x;
+-    lastSeenEvent.root_y = xiDeviceEvent->root_y;
+-
+-    if (isDuplicate) {
+-        qCDebug(lcQpaXInputEvents, "Duplicate XI2 event %d", event->event_type);
+-        // This sanity check ensures that special cases like QTBUG-59277 keep working.
+-        lastSeenEvent.isValid = false; // An event can be a duplicate only once.
+-    }
+-
+-    return isDuplicate;
+-}
+-
+-} // namespace
+-
+ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
+ {
+     auto *xiEvent = reinterpret_cast<qt_xcb_input_device_event_t *>(event);
+-    if (m_xiSlavePointerIds.contains(xiEvent->deviceid)) {
+-        if (!(xiEvent->event_type == XCB_INPUT_BUTTON_PRESS
+-              || xiEvent->event_type == XCB_INPUT_BUTTON_RELEASE
+-              || xiEvent->event_type == XCB_INPUT_MOTION)) {
+-            if (!m_duringSystemMoveResize)
+-                return;
+-            if (xiEvent->event == XCB_NONE)
+-                return;
+-
+-            if (xiEvent->event_type == XCB_INPUT_TOUCH_END)
+-                abortSystemMoveResize(xiEvent->event);
++    setTime(xiEvent->time);
++    if (m_xiSlavePointerIds.contains(xiEvent->deviceid) && xiEvent->event_type != XCB_INPUT_PROPERTY) {
++        if (!m_duringSystemMoveResize)
++            return;
++        if (xiEvent->event == XCB_NONE)
++            return;
+ 
++        if (xiEvent->event_type == XCB_INPUT_BUTTON_RELEASE
++            && xiEvent->detail == XCB_BUTTON_INDEX_1 ) {
++            abortSystemMoveResize(xiEvent->event);
++        } else if (xiEvent->event_type == XCB_INPUT_TOUCH_END) {
++            abortSystemMoveResize(xiEvent->event);
++            return;
++        } else {
+             return;
+         }
+     }
+@@ -783,27 +710,11 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
+     switch (xiEvent->event_type) {
+     case XCB_INPUT_BUTTON_PRESS:
+     case XCB_INPUT_BUTTON_RELEASE:
+-    case XCB_INPUT_MOTION: {
+-        if (isDuplicateEvent(event))
+-            return;
+-        if (m_xiSlavePointerIds.contains(xiEvent->deviceid)) {
+-            if (m_duringSystemMoveResize) {
+-                if (xiEvent->event_type == XCB_INPUT_BUTTON_RELEASE
+-                    && xiEvent->detail == XCB_BUTTON_INDEX_1 ) {
+-                    abortSystemMoveResize(xiEvent->event);
+-                } else {
+-                    return;
+-                }
+-            }
+-        }
+-        xiDeviceEvent = xiEvent;
+-        eventListener = windowEventListenerFromId(xiDeviceEvent->event);
+-        sourceDeviceId = xiDeviceEvent->sourceid; // use the actual device id instead of the master
+-        break;
+-    }
++    case XCB_INPUT_MOTION:
+     case XCB_INPUT_TOUCH_BEGIN:
+     case XCB_INPUT_TOUCH_UPDATE:
+-    case XCB_INPUT_TOUCH_END: {
++    case XCB_INPUT_TOUCH_END:
++    {
+         xiDeviceEvent = xiEvent;
+         eventListener = windowEventListenerFromId(xiDeviceEvent->event);
+         sourceDeviceId = xiDeviceEvent->sourceid; // use the actual device id instead of the master
+-- 
+2.46.1
+
diff --git a/0001-Use-newer-GCC-on-Leap.patch b/0001-Use-newer-GCC-on-Leap.patch
new file mode 100644
index 0000000..8c03240
--- /dev/null
+++ b/0001-Use-newer-GCC-on-Leap.patch
@@ -0,0 +1,54 @@
+From 793c4c0d728024139083660a7f382f6d95853efe Mon Sep 17 00:00:00 2001
+From: Christophe Marin <christophe@krop.fr>
+Date: Sun, 6 Jun 2021 10:44:09 +0200
+Subject: [PATCH] Use newer GCC on Leap.patch
+
+The default compiler in Leap doesn't match the Qt requirements.
+Use the latest compiler version available on Leap.
+
+Change-Id: I0c4ad87af4dd60d12fa09366eb9910edafcc9c4c
+---
+ mkspecs/common/g++-base.conf | 6 +++---
+ mkspecs/common/gcc-base.conf | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf
+index d392879..ddca128 100644
+--- a/mkspecs/common/g++-base.conf
++++ b/mkspecs/common/g++-base.conf
+@@ -8,14 +8,14 @@
+ # you can use the manual test in tests/manual/mkspecs.
+ #
+ 
+-QMAKE_COMPILER          = gcc
++QMAKE_COMPILER          = gcc-13
+ 
+-QMAKE_CC                = $${CROSS_COMPILE}gcc
++QMAKE_CC                = $${CROSS_COMPILE}gcc-13
+ 
+ QMAKE_LINK_C            = $$QMAKE_CC
+ QMAKE_LINK_C_SHLIB      = $$QMAKE_CC
+ 
+-QMAKE_CXX               = $${CROSS_COMPILE}g++
++QMAKE_CXX               = $${CROSS_COMPILE}g++-13
+ 
+ QMAKE_LINK              = $$QMAKE_CXX
+ QMAKE_LINK_SHLIB        = $$QMAKE_CXX
+diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
+index ae58326..33cc860 100644
+--- a/mkspecs/common/gcc-base.conf
++++ b/mkspecs/common/gcc-base.conf
+@@ -124,8 +124,8 @@ QMAKE_CFLAGS_MIPS_DSPR2 += -mdspr2
+ QMAKE_CFLAGS_ARCH_HASWELL           = -march=core-avx2
+ 
+ # Wrapper tools that understand .o/.a files with GIMPLE instead of machine code
+-QMAKE_AR_LTCG           = gcc-ar cqs
+-QMAKE_NM_LTCG           = gcc-nm -P
++QMAKE_AR_LTCG           = gcc-ar-13 cqs
++QMAKE_NM_LTCG           = gcc-nm-13 -P
+ QMAKE_RANLIB_LTCG       = true          # No need to run since gcc-ar has "s"
+ 
+ QMAKE_LINK_OBJECT_SCRIPT = object_script
+-- 
+2.43.0
+
diff --git a/_constraints b/_constraints
new file mode 100644
index 0000000..4ad9428
--- /dev/null
+++ b/_constraints
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<constraints>
+  <hardware>
+    <disk>
+      <size unit="G">12</size>
+    </disk>
+    <memory>
+      <size unit="G">4</size>
+    </memory>
+    <processors>4</processors>
+  </hardware>
+  <overwrite>
+    <conditions>
+      <arch>ppc64</arch>
+      <arch>ppc64le</arch>
+    </conditions>
+    <hardware>
+      <memory>
+        <size unit="G">5</size>
+      </memory>
+    </hardware>
+  </overwrite>
+  <!-- relax constraints for qt6-base:docs -->
+  <overwrite>
+    <conditions>
+      <package>qt6-base:docs</package>
+    </conditions>
+    <hardware>
+      <disk>
+        <size unit="G">3</size>
+      </disk>
+      <memory>
+        <size unit="G">2</size>
+      </memory>
+    </hardware>
+  </overwrite>
+</constraints>
diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..46731da
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,4 @@
+<multibuild>
+  <flavor>docs</flavor>
+</multibuild>
+
diff --git a/gcc14.patch b/gcc14.patch
new file mode 100644
index 0000000..8eb0128
--- /dev/null
+++ b/gcc14.patch
@@ -0,0 +1,48 @@
+From 39fa7e7bef90be2940c5f736935f963e3969e0bd Mon Sep 17 00:00:00 2001
+From: Dmitry Shachnev <mitya57@gmail.com>
+Date: Sat, 27 Jul 2024 23:03:07 +0300
+Subject: [PATCH] Use _Float16 only when SSE2 is enabled
+
+The GCC documentation [1] says: “On x86 targets with SSE2 enabled, GCC
+supports half-precision (16-bit) floating point via the _Float16 type”.
+
+On non-SSE2 x86 (such as Debian i386 baseline [2]), __FLT16_MAX__ is
+defined starting with GCC 14 [3], however any non-trivial use of the
+_Float16 type results in an error:
+
+error: operation not permitted on type ‘_Float16’ without option ‘-msse2’
+
+which makes some packages fail to build on i386 architecture [4].
+
+[1]: https://gcc.gnu.org/onlinedocs/gcc/Half-Precision.html
+[2]: https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1
+[3]: https://gcc.gnu.org/g:9a19fa8b616f83474c35cc5b34a3865073ced829
+[4]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076986
+
+Pick-to: 6.8 6.7 6.5
+Change-Id: I393ee83eb8e8888f5fc9e3b349dc8b063eef6f5a
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+---
+
+diff --git a/src/corelib/global/qtypes.h b/src/corelib/global/qtypes.h
+index db9ba38..28458f6 100644
+--- a/src/corelib/global/qtypes.h
++++ b/src/corelib/global/qtypes.h
+@@ -263,13 +263,12 @@
+ // disabled due to https://github.com/llvm/llvm-project/issues/56963
+ #  define QFLOAT16_IS_NATIVE        1
+ using NativeFloat16Type = decltype(__FLT16_MAX__);
+-#elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__)
++#elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__) && defined(__ARM_FP16_FORMAT_IEEE)
+ #  define QFLOAT16_IS_NATIVE        1
+-#  ifdef __ARM_FP16_FORMAT_IEEE
+ using NativeFloat16Type = __fp16;
+-#  else
++#elif defined(Q_CC_GNU_ONLY) && defined(__FLT16_MAX__) && defined(__SSE2__)
++#  define QFLOAT16_IS_NATIVE        1
+ using NativeFloat16Type = _Float16;
+-#  endif
+ #else
+ #  define QFLOAT16_IS_NATIVE        0
+ using NativeFloat16Type = void;
diff --git a/qt6-base-rpmlintrc b/qt6-base-rpmlintrc
new file mode 100644
index 0000000..e240a87
--- /dev/null
+++ b/qt6-base-rpmlintrc
@@ -0,0 +1,12 @@
+# using fdupes on include directories means looking for troubles
+addFilter("files-duplicated-waste .*")
+addFilter("files-duplicate .*")
+
+# library and development package names don't match
+addFilter("no-dependency-on .*")
+
+# Only libraries used at link time are guaranteed to work
+addFilter("shlib-fixed-dependency .*")
+
+# libQt6ExampleIcons.a only contains embedded icons, there's nothing to extract
+addFilter("lto-no-text-in-archive .*libQt6ExampleIcons.a")
diff --git a/qt6-base.changes b/qt6-base.changes
new file mode 100644
index 0000000..e5369f6
--- /dev/null
+++ b/qt6-base.changes
@@ -0,0 +1,674 @@
+-------------------------------------------------------------------
+Sun Mar  9 09:28:39 UTC 2025 - Christophe Marin <christophe@krop.fr>
+
+- Add patch (fixes boo#1218403):
+  * 0001-Change-default-settings-for-Qt-packages.patch
+
+-------------------------------------------------------------------
+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>
+
+- Add patches to avoid crashes on exit (kde#499537):
+  * 0001-Revert-QThread-Unix-move-the-pthread_key-to-a-file-s.patch
+  * 0002-Revert-QThread-Unix-revert-to-pthread-destruction-in.patch
+
+-------------------------------------------------------------------
+Fri Jan 31 10:22:52 UTC 2025 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.8.2
+  https://www.qt.io/blog/qt-6.8.2-released
+
+-------------------------------------------------------------------
+Mon Dec  2 13:01:57 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.8.1:
+  * https://www.qt.io/blog/qt-6.8.1-released
+- Drop patches, merged upstream:
+  * 0001-QAbstractItemModelPrivate-add-resetting-member.patch
+  * 0001-QUuid-restore-sorting-order-of-Qt-6.8.patch
+  * 0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch
+
+-------------------------------------------------------------------
+Tue Oct 22 06:59:37 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Add patch to fix qxmpp test failures (gh#qxmpp-project/qxmpp#659):
+  * 0001-QUuid-restore-sorting-order-of-Qt-6.8.patch
+- Add patch to fix potential crash with QDirIterator (QTBUG-130142):
+  * 0001-QDirIterator-don-t-crash-with-next-after-hasNext-ret.patch
+
+-------------------------------------------------------------------
+Tue Oct  8 09:29:39 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.8.0:
+  * https://www.qt.io/blog/qt-6.8-released
+- Add upstream change (needed for kde 493116's bugfix):
+  * 0001-QAbstractItemModelPrivate-add-resetting-member.patch
+- Drop patch, merged upstream:
+  * 0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch
+
+-------------------------------------------------------------------
+Tue Oct  1 22:23:35 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream fix:
+  * 0001-Revert-xcb-handle-XI2-input-button-and-motion-events.patch
+
+-------------------------------------------------------------------
+Sat Sep 28 08:22:54 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.7.3
+  * https://www.qt.io/blog/qt-6.7.3-released
+- Drop patches, merged upstream:
+  * gcc14.patch
+  * 0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch
+
+-------------------------------------------------------------------
+Wed Aug  7 12:46:16 UTC 2024 - Filip Kastl <filip.kastl@suse.com>
+
+- Add gcc14.patch so that the package builds for 32bit with GCC 14.
+
+-------------------------------------------------------------------
+Sat Jul  6 11:22:52 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream change (boo#1227426, CVE-2024-39936)
+  * 0001-HTTP2-Delay-any-communication-until-encrypted-can-be.patch
+
+-------------------------------------------------------------------
+Wed Jun 19 07:25:37 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.7.2:
+  * https://www.qt.io/blog/qt-6.7.2-released
+
+-------------------------------------------------------------------
+Tue May 21 08:31:24 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.7.1:
+  * https://www.qt.io/blog/qt-6.7.1-released
+- Build with system md4c when possible
+- Drop patches, merged upstream:
+  * fix_builds_with_Werror.patch
+  * 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch
+  * 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch
+
+-------------------------------------------------------------------
+Fri May  3 07:15:23 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream security fix (CVE-2024-33861, boo#1223917):
+  * 0001-QStringConverterICU-Pass-correct-pointer-to-callback.patch
+
+-------------------------------------------------------------------
+Tue Apr  2 13:39:34 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.7.0:
+  * https://www.qt.io/blog/qt-6.7-released
+- Replace 0001-Tell-the-truth-about-private-API.patch with
+  upstream change:
+  * 0001-CMake-ELF-allow-using-Qt-s-full-version-number-in-th.patch
+- Add upstream fix (QTBUG-123937):
+  * fix_builds_with_Werror.patch
+
+-------------------------------------------------------------------
+Tue Mar 26 14:25:22 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.6.3:
+  * https://www.qt.io/blog/qt-6.6.3-released
+  * Includes fix for issue where the wasm component may access
+    QNetworkReply header data via a dangling pointer
+    (CVE-2024-30161, bsc#1221926, QTBUG-122893)
+- Make libQt6PrintSupport6 require qt6-printsupport-cups
+  (boo#1221576)
+
+-------------------------------------------------------------------
+Thu Mar 21 14:56:42 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Replace the postgresql-server build dependency with the client library
+
+-------------------------------------------------------------------
+Wed Feb 14 16:53:08 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.6.2
+  * https://www.qt.io/blog/qt-6.6.2-released
+  * Fix for potential buffer overflow when reading KTX
+    images (boo#1219996, CVE-2024-25580)
+- Drop patches, merged upstream:
+  * 0001-QMimeDatabase-handle-buggy-type-definitions.patch
+  * 0001-QMimeDatabase-collect-glob-patterns-from.patch
+  * 0001-HPack-fix-a-Yoda-Condition.patch
+  * 0002-HPack-fix-incorrect-integer-overflow-check.patch
+  * 0001-Http2-fix-potential-overflow-in-assemble_hpack_block.patch
+
+-------------------------------------------------------------------
+Wed Jan 31 14:51:31 UTC 2024 - Christophe Marin <christophe@krop.fr>
+
+- Switch to the latest GCC version available in Leap
+- Replace 0001-Require-GCC-12.patch with 0001-Use-newer-GCC-on-Leap.patch
+
+-------------------------------------------------------------------
+Wed Jan  3 08:52:06 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
+
+- Add upstream patches to fix an incorrect integer overflow check
+  (boo#1218413, CVE-2023-51714):
+  * 0001-HPack-fix-a-Yoda-Condition.patch
+  * 0002-HPack-fix-incorrect-integer-overflow-check.patch
+- Add upstream patch to fix a potential overflow in
+  assemble_hpack_block():
+  * 0001-Http2-fix-potential-overflow-in-assemble_hpack_block.patch
+
+-------------------------------------------------------------------
+Sat Dec 30 14:51:31 UTC 2023 - Luca Beltrame <lbeltrame@kde.org>
+
+- Add upstream patch for a bug in QMimeDatabase which makes
+  impossible to save JPEG files in Qt6 applications:
+  * 0001-QMimeDatabase-collect-glob-patterns-from.patch
+  * https://code.qt.io/cgit/qt/qtbase.git/commit/?id=4e9944e6c8a456353d243ab268cb0f01ff006faa
+
+-------------------------------------------------------------------
+Mon Dec  4 19:11:49 UTC 2023 - Kacper Koniuszy <kacper.koniuszy@tuta.io>
+
+- Add upstream patch for a bug in QMimeDatabase that causes some
+  applications to hang:
+  * 0001-QMimeDatabase-handle-buggy-type-definitions.patch
+  * https://code.qt.io/cgit/qt/qtbase.git/commit/?id=54656da9ace06caf4a0eeb1832989c0ab211a4a0
+
+-------------------------------------------------------------------
+Mon Nov 27 14:00:05 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.6.1:
+  * https://www.qt.io/blog/qt-6.6.1-released
+- Drop patches, merged upstream:
+  * 0001-xcb-replace-a-warning-with-debug-info-in-qxcbconnect.patch
+  * 0001-a11y-fix-race-condition-on-atspi-startup-on-Wayland.patch
+  * 0001-xkb-fix-build-with-libxkbcommon-1.6.0-and-later.patch
+
+-------------------------------------------------------------------
+Thu Nov 16 09:14:40 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Make libQt6Network6 require the network plugins
+
+-------------------------------------------------------------------
+Fri Nov  3 11:34:03 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream changes:
+  * 0001-xcb-replace-a-warning-with-debug-info-in-qxcbconnect.patch (QTBUG-117820)
+  * 0001-a11y-fix-race-condition-on-atspi-startup-on-Wayland.patch
+- Turn FEATURE_forkfd_pidfd off until QTBUG-117954 gets fixed
+
+-------------------------------------------------------------------
+Wed Oct 25 14:16:30 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream change:
+  * 0001-xkb-fix-build-with-libxkbcommon-1.6.0-and-later.patch
+
+-------------------------------------------------------------------
+Tue Oct 10 09:39:48 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.6.0
+  * https://www.qt.io/blog/qt-6.6-released
+
+-------------------------------------------------------------------
+Wed Oct  4 07:25:51 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add patch to fix creation of -debuginfo packages for qmake builds:
+  * 0001-Don-t-strip-binaries-when-building-with-qmake.patch
+
+-------------------------------------------------------------------
+Thu Sep 28 07:34:06 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.5.3
+  * https://www.qt.io/blog/qt-6.5.3-released
+- Drop patch, merged upstream:
+  * CVE-2023-38197-qtbase-6.5.diff
+- Enable the experimental native painting feature to improve
+  remote desktop performances (boo#1214915)
+  exporting QT_XCB_NATIVE_PAINTING is required to use the feature.
+
+-------------------------------------------------------------------
+Thu Jul 20 08:34:44 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Use a mirror to download sources for all Qt packages. Upstream
+  servers are very slow since a couple weeks.
+- Update to 6.5.2
+  * https://www.qt.io/blog/qt-6.5.2-released-1
+  * Includes fix for a buffer overflow in QXmlStreamReader
+    (boo#1214327, CVE-2023-37369).
+- Drop patches, merged upstream:
+  * 0001-Schannel-Reject-certificate-not-signed-by-a-configur.patch
+  * 0001-Ssl-Copy-the-on-demand-cert-loading-bool-from-defaul.patch
+  * 0001-tabbar-fix.patch
+- Add patch:
+  * CVE-2023-38197-qtbase-6.5.diff (boo#1213326, CVE-2023-38197)
+
+-------------------------------------------------------------------
+Fri Jun 30 15:13:07 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update subpackages requirements
+
+-------------------------------------------------------------------
+Thu Jun 29 11:13:42 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Replace 0001-Require-GCC-10.patch with 0001-Require-GCC-12.patch
+
+-------------------------------------------------------------------
+Wed Jun  7 17:58:46 UTC 2023 - Jonas Kvinge <jonaski@opensuse.org>
+
+- Add patch for QTabBar regression in Qt 6.5.1 (QTBUG-114204)
+  * 0001-tabbar-fix.patch
+
+-------------------------------------------------------------------
+Mon Jun  5 08:59:52 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream changes (CVE-2023-34410, boo#1211994):
+  * 0001-Schannel-Reject-certificate-not-signed-by-a-configur.patch
+  * 0001-Ssl-Copy-the-on-demand-cert-loading-bool-from-defaul.patch
+
+-------------------------------------------------------------------
+Wed May 24 07:45:34 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.5.1
+  * https://www.qt.io/blog/qt-6.5.1-released
+  * Includes fix for a buffer overflow in QTextLayout (boo#1211798,
+    CVE-2023-32763).
+  * Includes fix for incorrect parsing of strict-transport-security
+    (HSTS) header (boo#1211797, CVE-2023-32762)
+  * Includes fix for a buffer overflow in QDnsLookup
+    (CVE-2023-33285, bsc#1211642)
+- Drop patches, merged upstream:
+  * 0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch
+  * 0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch
+- Add patch
+  * 0001-CMake-Install-objects-files-into-ARCHDATADIR.patch
+
+-------------------------------------------------------------------
+Fri Apr 28 13:56:55 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream change to fix boo#1210849:
+  * 0001-QVariant-Fix-support-for-metatypes-created-by-Qt-6.5.patch
+
+-------------------------------------------------------------------
+Sat Apr  8 10:42:33 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Add upstream change:
+  * 0001-QApplication-Fix-DEPRECATED_VERSION-for-setActiveWin.patch
+
+-------------------------------------------------------------------
+Mon Apr  3 10:01:48 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.5.0
+  * https://www.qt.io/blog/qt-6.5-lts-released
+  * Includes fix for boo#1215178, QTBUG-109474, QTCREATORBUG-28593
+- Drop patch, merged upstream:
+  * 0001-Avoid-resetting-CMAKE_AUTOMOC_MACRO_NAMES.patch
+
+-------------------------------------------------------------------
+Thu Mar 16 09:59:57 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.4.3:
+  * https://www.qt.io/blog/qt-6.4.3-released
+- Drop patch, merged upstream:
+  * CVE-2023-24607-qtbase-6.4.diff
+- Add patch to silence moc warnings:
+  * 0001-Avoid-resetting-CMAKE_AUTOMOC_MACRO_NAMES.patch
+
+-------------------------------------------------------------------
+Wed Feb  8 17:48:36 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Fix a possible DOS in the Qt ODBC driver plugin (CVE-2023-24607,
+  bsc#1209616):
+  * CVE-2023-24607-qtbase-6.4.diff
+
+-------------------------------------------------------------------
+Fri Jan  6 16:46:36 UTC 2023 - Christophe Marin <christophe@krop.fr>
+
+- Update to 6.4.2:
+  * https://www.qt.io/blog/qt-6.4.2-released
+
+-------------------------------------------------------------------
+Tue Nov 15 11:53:07 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.4.1:
+  * https://www.qt.io/blog/qt-6.4.1-released
+
+-------------------------------------------------------------------
+Sun Oct 16 07:39:21 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Make sure the QPA and wayland-related plugins are installed if
+  needed
+
+-------------------------------------------------------------------
+Thu Sep 29 10:35:48 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.4.0:
+  * https://www.qt.io/blog/qt-6.4-released
+
+-------------------------------------------------------------------
+Fri Sep 16 08:29:02 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.4.0 RC
+
+-------------------------------------------------------------------
+Fri Sep  9 12:41:32 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.3.2:
+  * https://www.qt.io/blog/qt-6.3.2-released
+
+-------------------------------------------------------------------
+Fri Jun 17 15:15:01 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.3.1:
+  * https://www.qt.io/blog/qt-6.3.1-released
+- Drop patches, now upstream:
+  * 0001-CMake-Don-t-hardcode-the-library-directory-name.patch
+  * 0001-XCB-fix-GCC-12-warning-about-uninitialized-variable-.patch
+  * 0001-Fix-build-with-GCC12-avoid-QCborStreamReader-prepars.patch
+  * 0001-QtOpenGL-Fix-build-with-GCC-12-qt_imageForBrush-is-i.patch
+
+-------------------------------------------------------------------
+Tue May 10 07:30:33 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Add GCC 12 compatibility changes:
+  * 0001-XCB-fix-GCC-12-warning-about-uninitialized-variable-.patch
+  * 0001-Fix-build-with-GCC12-avoid-QCborStreamReader-prepars.patch
+  * 0001-QtOpenGL-Fix-build-with-GCC-12-qt_imageForBrush-is-i.patch
+
+-------------------------------------------------------------------
+Tue May  3 11:25:01 UTC 2022 - Fabian Vogt <fabian@ritter-vogt.de>
+
+- Require the SSL devel package it was built with, not just any
+  pkgconfig(openssl). Otherwise it is satisfied with libressl-devel
+  even if it was built with openssl-devel.
+
+-------------------------------------------------------------------
+Fri Apr  8 11:56:51 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.3.0:
+  * https://www.qt.io/blog/qt-6.3-released
+
+-------------------------------------------------------------------
+Tue Mar 29 12:28:29 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.3.0-rc
+- Add patch:
+  * 0001-CMake-Don-t-hardcode-the-library-directory-name.patch
+- Update build constraints
+
+-------------------------------------------------------------------
+Mon Mar 21 08:46:52 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.4
+  * https://www.qt.io/blog/qt-6.2.4-released
+- Drop 0001-QProcess-Unix-ensure-we-don-t-accidentally-execute-s.patch
+  Merged upstream.
+
+-------------------------------------------------------------------
+Wed Mar  2 09:16:10 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Add upstream change (boo#1196501, CVE-2022-25255):
+  * 0001-QProcess-Unix-ensure-we-don-t-accidentally-execute-s.patch
+- Install qt6-core-private-devel when installing qt6-core-devel
+  (boo#1195368)
+
+-------------------------------------------------------------------
+Mon Jan 31 08:54:21 UTC 2022 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.3:
+  * https://www.qt.io/blog/qt-6.2.3-released
+
+-------------------------------------------------------------------
+Wed Dec 22 13:47:40 UTC 2021 - Antonio Larrosa <alarrosa@suse.com>
+
+- Increase the memory constraint to fix a oom failure
+
+-------------------------------------------------------------------
+Wed Dec  1 10:05:54 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.2
+  * https://www.qt.io/blog/qt-6.2.2-released
+- Make sure all dependencies are present when installing devel
+  packages. Qt >= 6.2.2 is much less permissive.
+- Drop 0001-qscrollarea-performance-fix.patch. Merged upstream.
+
+-------------------------------------------------------------------
+Thu Nov  4 20:59:52 UTC 2021 - Jonas Kvinge <jonaski@opensuse.org>
+
+- Add patch for critical performance regression in qscrollarea
+  * 0001-qscrollarea-performance-fix.patch
+
+-------------------------------------------------------------------
+Tue Oct 26 11:22:28 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.1
+  * https://www.qt.io/blog/qt-6.2.1-released
+
+
+-------------------------------------------------------------------
+Thu Sep 30 12:25:46 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.0:
+  * https://www.qt.io/blog/qt-6.2-lts-released
+
+-------------------------------------------------------------------
+Sat Sep 25 07:18:33 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.0-rc2
+
+-------------------------------------------------------------------
+Thu Sep 16 14:07:31 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.0-rc
+
+-------------------------------------------------------------------
+Thu Sep  9 14:04:56 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.2.0-beta4
+
+-------------------------------------------------------------------
+Wed Sep  1 13:03:23 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.3:
+  * https://www.qt.io/blog/qt-6.1.3-released
+
+-------------------------------------------------------------------
+Fri Jul  2 14:07:30 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.2. New bugfix release:
+  * https://www.qt.io/blog/qt-6.1.2-released
+
+-------------------------------------------------------------------
+Tue Jun  8 05:54:07 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.1:
+  * https://www.qt.io/blog/qt-6.1.1-released
+
+-------------------------------------------------------------------
+Sat Jun  5 15:50:54 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update the minimum disk size. Leap 15.3 needs more than 13G.
+- Also require at least 4 cores.
+
+-------------------------------------------------------------------
+Thu May  6 17:10:11 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.0:
+  * https://www.qt.io/blog/qt-6.1-released
+
+-------------------------------------------------------------------
+Fri Apr 23 14:11:33 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.0-rc.
+
+-------------------------------------------------------------------
+Sat Apr 17 08:04:45 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Stop owning directories provided by the filesystem package (boo#1184786)
+
+-------------------------------------------------------------------
+Tue Apr 13 06:29:24 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.0-beta3.
+
+-------------------------------------------------------------------
+Wed Mar 31 13:29:44 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.3
+  * https://www.qt.io/blog/qt-6.0.3-released
+
+-------------------------------------------------------------------
+Sat Mar 20 17:12:40 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.0-beta2
+- Drop fix-fixqt4headers.patch. No longer needed.
+
+-------------------------------------------------------------------
+Fri Mar  5 17:23:59 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.1.0-beta1
+  https://www.qt.io/blog/qt-6.1-beta-released
+
+-------------------------------------------------------------------
+Fri Mar  5 09:31:18 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.2:
+  https://www.qt.io/blog/qt-6.0.2-released
+
+-------------------------------------------------------------------
+Wed Feb  3 16:54:58 UTC 2021 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.1
+  https://www.qt.io/blog/qt-6.0.1-released
+- Drop patches:
+  * 0001-Fix-QCache-Crash.patch
+  * 0001-CMake-Fix-conditions-for-some-subarch-features.patch
+  * 0001-CMake-strip-the-executable-bit-from-qt-cmake-private.patch
+- Enable ltcg where possible.
+
+-------------------------------------------------------------------
+Sat Jan 23 20:24:22 UTC 2021 - Mykola Krachkovsky <w01dnick@gmail.com>
+
+- Remove uikit qmake spec to avoid automatic dep on python2
+
+-------------------------------------------------------------------
+Wed Dec 16 11:26:03 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Use a different 'Name' when building the docs flavor.
+
+-------------------------------------------------------------------
+Fri Dec 11 15:56:51 UTC 2020 - Jonas Kvinge <jonas@jkvinge.net>
+
+- Add patch for critical bug: QCache related crashes.
+  * 0001-Fix-QCache-Crash.patch
+
+-------------------------------------------------------------------
+Tue Dec  8 14:09:01 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0:
+  * https://www.qt.io/blog/qt-6.0-released
+
+-------------------------------------------------------------------
+Mon Dec  7 18:42:26 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- libQt6Core6 now owns most of runtime folders and
+  qt6-base-common-devel owns development ones.
+
+-------------------------------------------------------------------
+Thu Dec  3 17:59:47 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Disable the reduce_relocations option. (boo#1175278, QTBUG-86173)
+
+-------------------------------------------------------------------
+Wed Dec  2 12:08:58 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Qt 6.0.0 RC2
+
+-------------------------------------------------------------------
+Wed Dec  2 11:06:59 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Add the missing openssl dependency for qt6-network-private-devel
+
+-------------------------------------------------------------------
+Mon Nov 30 16:55:57 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Add upstream patches:
+  * 0001-CMake-strip-the-executable-bit-from-qt-cmake-private.patch
+  * 0001-CMake-Fix-conditions-for-some-subarch-features.patch
+
+-------------------------------------------------------------------
+Wed Nov 25 14:19:54 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0~rc1
+
+-------------------------------------------------------------------
+Tue Nov 17 07:26:23 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0~beta5
+- Drop upstream patches:
+  * 0001-CMake-Potentially-use-INSTALL_LIBDIR-in-qt6_extract_.patch
+  * 0001-CMake-Allow-using-DESTDIR-when-installing-documentat.patch
+  * 0001-CMake-Make-zstd-config-based-lookup-quiet.patch
+
+-------------------------------------------------------------------
+Tue Nov 10 18:40:31 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0~beta4
+- Replace patches:
+  * 0001-CMake-Allow-using-DESTDIR-when-installing-documentat.patch
+    (replaces 0001-cmake-Fix-doc-installation.patch)
+  * 0001-CMake-Potentially-use-INSTALL_LIBDIR-in-qt6_extract_.patch
+    (replaces 0001-cmake-Don-t-hardcode-the-library-directory-name.patch)
+- Add upstream patch:
+  * 0001-CMake-Locate-zstd-using-CONFIG.patch
+
+-------------------------------------------------------------------
+Tue Oct 20 07:47:07 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0beta1
+  https://www.qt.io/blog/qt-6.0-beta-released
+
+-------------------------------------------------------------------
+Wed Oct  7 12:24:40 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Turn more options on:
+  * link to openSSL
+  * libproxy usage
+
+-------------------------------------------------------------------
+Tue Oct  6 19:41:23 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Update to 6.0.0-alpha
+  https://www.qt.io/blog/qt-6.0-alpha-released
+- Import fix-fixqt4headers.patch from libqt5-qtbase
+- Add patches:
+  * 0001-cmake-Fix-doc-installation.patch
+  * 0001-cmake-Don-t-hardcode-the-library-directory-name.patch
+
+-------------------------------------------------------------------
+Sun Sep 20 08:25:20 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Resurrect 0001-Tell-the-truth-about-private-API.patch from
+  libqt5-qtbase
+
+-------------------------------------------------------------------
+Tue Jan 21 22:38:13 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Add a qt6-printsupport-cups package for the cups plugin
+- Add the journald option back
+
+-------------------------------------------------------------------
+Tue Jan 21 22:19:11 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Split the changes into smaller commits
+- Fixed the wrong paths in CMake config files
+- Fixed the mkspecs install dir. Everything is in qt6_mkspecsdir now.
+
+-------------------------------------------------------------------
+Tue Dec 31 09:06:08 UTC 2019 - Christophe Giboudeaux <christophe@krop.fr>
+
+- Experimental qt6-qtbase package
diff --git a/qt6-base.spec b/qt6-base.spec
new file mode 100644
index 0000000..2b707c3
--- /dev/null
+++ b/qt6-base.spec
@@ -0,0 +1,1311 @@
+#
+# spec file for package qt6-base
+#
+# Copyright (c) 2024 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+%define real_version 6.8.2
+%define short_version 6.8
+%define tar_name qtbase-everywhere-src
+%define tar_suffix %{nil}
+#
+%global qt6_flavor @BUILD_FLAVOR@%{nil}
+%if "%{qt6_flavor}" == "docs"
+%define pkg_suffix -docs
+%endif
+#
+%ifarch %{arm} aarch64
+%global with_gles 1
+%endif
+%if 0%{?suse_version} > 1500
+%bcond_without system_md4c
+%endif
+Name:           qt6-base%{?pkg_suffix}
+Version:        6.8.2
+Release:        0
+Summary:        Qt 6 core components (Core, Gui, Widgets, Network...)
+# Legal: qtpaths is BSD-3-Clause
+License:        LGPL-2.1-with-Qt-Company-Qt-exception-1.1 OR LGPL-3.0-only
+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
+%if 0%{?suse_version} == 1500
+Patch101:       0001-Use-newer-GCC-on-Leap.patch
+%endif
+Patch102:       0001-Don-t-strip-binaries-when-building-with-qmake.patch
+# Change a couple default build system settings
+Patch103:       0001-Change-default-settings-for-Qt-packages.patch
+##
+BuildRequires:  cmake >= 3.18.3
+BuildRequires:  cups-devel
+# The default GCC version in Leap 15 is too old
+%if 0%{?suse_version} == 1500
+BuildRequires:  gcc13-PIE
+BuildRequires:  gcc13-c++
+%else
+BuildRequires:  gcc-c++
+%endif
+BuildRequires:  libicu-devel
+BuildRequires:  libmysqlclient-devel
+BuildRequires:  libproxy-devel
+# Feature is disabled by default
+# BuildRequires:  lksctp-tools-devel
+BuildRequires:  pcre2-devel
+BuildRequires:  perl
+BuildRequires:  pkgconfig
+BuildRequires:  qt6-macros
+BuildRequires:  xmlstarlet
+BuildRequires:  cmake(double-conversion)
+%if %{with system_md4c}
+BuildRequires:  cmake(md4c)
+%endif
+BuildRequires:  pkgconfig(atspi-2)
+BuildRequires:  pkgconfig(dbus-1)
+BuildRequires:  pkgconfig(egl)
+BuildRequires:  pkgconfig(fontconfig)
+BuildRequires:  pkgconfig(freetype2)
+BuildRequires:  pkgconfig(gbm)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(gtk+-3.0)
+BuildRequires:  pkgconfig(harfbuzz)
+BuildRequires:  pkgconfig(krb5-gssapi)
+BuildRequires:  pkgconfig(libb2)
+BuildRequires:  pkgconfig(libbrotlicommon)
+BuildRequires:  pkgconfig(libbrotlidec)
+BuildRequires:  pkgconfig(libbrotlienc)
+BuildRequires:  pkgconfig(libdrm)
+BuildRequires:  pkgconfig(libinput)
+BuildRequires:  pkgconfig(libpng)
+BuildRequires:  pkgconfig(libpq)
+BuildRequires:  pkgconfig(libsystemd)
+BuildRequires:  pkgconfig(libturbojpeg)
+BuildRequires:  pkgconfig(libudev)
+BuildRequires:  pkgconfig(libzstd)
+BuildRequires:  pkgconfig(mtdev)
+BuildRequires:  pkgconfig(odbc)
+BuildRequires:  pkgconfig(opengl)
+BuildRequires:  pkgconfig(openssl) >= 1.1.1
+BuildRequires:  pkgconfig(sm)
+BuildRequires:  pkgconfig(sqlite3)
+BuildRequires:  pkgconfig(tslib)
+BuildRequires:  pkgconfig(vulkan)
+BuildRequires:  pkgconfig(wayland-client)
+BuildRequires:  pkgconfig(wayland-cursor)
+BuildRequires:  pkgconfig(wayland-egl)
+BuildRequires:  pkgconfig(wayland-server)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(x11-xcb)
+BuildRequires:  pkgconfig(xcb)
+BuildRequires:  pkgconfig(xcb-cursor)
+BuildRequires:  pkgconfig(xcb-icccm)
+BuildRequires:  pkgconfig(xcb-image)
+BuildRequires:  pkgconfig(xcb-keysyms)
+BuildRequires:  pkgconfig(xcb-renderutil)
+BuildRequires:  pkgconfig(xcb-util)
+BuildRequires:  pkgconfig(xkbcommon)
+BuildRequires:  pkgconfig(xkbcommon-x11)
+BuildRequires:  pkgconfig(xrender)
+BuildRequires:  pkgconfig(zlib)
+%if 0%{?with_gles}
+BuildRequires:  Mesa-libGLESv3-devel
+BuildRequires:  pkgconfig(glesv2)
+%endif
+# Not available for armv7l, s390x and riscv64
+%ifnarch %{arm} s390x riscv64
+BuildRequires:  pkgconfig(lttng-ust)
+%endif
+%if "%{qt6_flavor}" == "docs"
+BuildRequires:  qt6-tools
+%{qt6_doc_packages}
+%endif
+
+%description
+Qt is a set of libraries for developing applications.
+
+This package contains base tools, like string, xml, and network
+handling.
+
+%if !%{qt6_docs_flavor}
+
+%package devel
+Summary:        Qt 6 base development meta package
+Requires:       qt6-base-common-devel
+Requires:       cmake(Qt6Concurrent) = %{real_version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Requires:       cmake(Qt6DBus) = %{real_version}
+Requires:       cmake(Qt6Gui) = %{real_version}
+Requires:       cmake(Qt6Network) = %{real_version}
+Requires:       cmake(Qt6OpenGL) = %{real_version}
+Requires:       cmake(Qt6OpenGLWidgets) = %{real_version}
+Requires:       cmake(Qt6PrintSupport) = %{real_version}
+Requires:       cmake(Qt6Sql) = %{real_version}
+Requires:       cmake(Qt6Test) = %{real_version}
+Requires:       cmake(Qt6Widgets) = %{real_version}
+Requires:       cmake(Qt6Xml) = %{real_version}
+BuildArch:      noarch
+
+%description devel
+This meta-package requires all the qt6-base development packages.
+
+%package private-devel
+Summary:        Qt 6 base unstable ABI meta package
+Requires:       qt6-base-devel = %{version}
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-dbus-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+Requires:       qt6-kmssupport-private-devel = %{version}
+Requires:       qt6-network-private-devel = %{version}
+Requires:       qt6-opengl-private-devel = %{version}
+Requires:       qt6-platformsupport-private-devel = %{version}
+Requires:       qt6-printsupport-private-devel = %{version}
+Requires:       qt6-sql-private-devel = %{version}
+Requires:       qt6-test-private-devel = %{version}
+Requires:       qt6-widgets-private-devel = %{version}
+Requires:       qt6-xml-private-devel = %{version}
+BuildArch:      noarch
+
+%description private-devel
+This meta-package requires all the qt6-base development packages that do not
+have any ABI or API guarantees.
+
+%package common-devel
+Summary:        Qt 6 Core development utilities
+Requires:       cmake
+Requires:       gcc-c++
+Requires:       pkgconfig
+Requires:       qt6-macros
+# qtpaths moved from qt6-tools to qt6-base with Qt 6.2
+Provides:       qt6-tools-qtpaths = 6.2.0
+Obsoletes:      qt6-tools-qtpaths < 6.2.0
+
+%description common-devel
+Qt 6 Core development utilities.
+It contains the qtbase utilities and definitions.
+
+%package -n libQt6Concurrent6
+Summary:        Qt 6 Concurrent library
+Requires:       libQt6Core6 = %{version}
+
+%description -n libQt6Concurrent6
+The QtConcurrent namespace provides high-level APIs that help write
+multi-threaded programs without using low-level threading primitives
+such as mutexes, read-write locks, wait conditions, or semaphores.
+Programs written with QtConcurrent automatically adjust the number of
+threads used according to the number of processor cores available.
+
+QtConcurrent includes functional programming style APIs for parallel
+list processing, including a MapReduce and FilterReduce
+implementation for shared-memory (non-distributed) systems, and
+classes for managing asynchronous computations in GUI applications.
+
+%package -n qt6-concurrent-devel
+Summary:        Development files for the Qt 6 Concurrent library
+Requires:       libQt6Concurrent6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+
+%description -n qt6-concurrent-devel
+Development files for the Qt 6 Concurrent library.
+
+%package -n libQt6Core6
+Summary:        Qt 6 Core library
+Recommends:     qt6-translations
+
+%description -n libQt6Core6
+The Qt 6 Core library. It adds these features to C++:
+
+* a mechanism for object communication called signals and slots
+* queryable and designable object properties
+* hierarchical and queryable object trees that organize
+* object ownership in a natural way with guarded pointers (QPointer)
+* a dynamic cast that works across library boundaries
+
+%package -n qt6-core-devel
+Summary:        Development files for the Qt 6 Core library
+Requires:       libQt6Core6 = %{version}
+Requires:       qt6-base-common-devel = %{version}
+%if 0%{?suse_version} == 1500
+# Some public classes require C++ 17 features
+Requires:       gcc13-PIE
+Requires:       gcc13-c++
+%endif
+
+%description -n qt6-core-devel
+Development files for the Qt 6 Core library.
+
+%package -n qt6-core-private-devel
+Summary:        Non-ABI stable API for the Qt 6 Core library
+Requires:       cmake(Qt6Core) = %{real_version}
+
+%description -n qt6-core-private-devel
+This package provides private headers of libQt6Core that do not have any
+ABI or API guarantees.
+
+%package -n libQt6DBus6
+Summary:        Qt6 D-Bus library
+Requires:       libQt6Core6 = %{version}
+
+%description -n libQt6DBus6
+The Qt D-Bus module is a library that can be used to perform
+inter-process communication using the D-Bus protocol.
+
+%package -n qt6-dbus-devel
+Summary:        Development files for the Qt 6 D-Bus library
+Requires:       libQt6DBus6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+
+%description -n qt6-dbus-devel
+Development files for the Qt 6 D-Bus library. This package also
+contains Qt6's qdbusxml2cpp and qdbuscpp2xml binaries.
+
+%package -n qt6-dbus-private-devel
+Summary:        Non-ABI stable API for the Qt 6 D-Bus library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       cmake(Qt6DBus) = %{real_version}
+
+%description -n qt6-dbus-private-devel
+This package provides private headers of libQt6DBus that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Gui6
+Summary:        Qt 6 GUI related libraries
+Requires:       libQt6Core6 = %{version}
+Requires:       libQt6DBus6 = %{version}
+# This package provides the wayland QPA and related plugins
+Requires:       (qt6-wayland if xwayland)
+Recommends:     qt6-imageformats = %{version}
+
+%description -n libQt6Gui6
+The Qt GUI module provides classes for windowing system integration,
+event handling, OpenGL and OpenGL ES integration, 2D graphics, basic
+imaging, fonts and text. These classes are used internally by Qt's
+user interface code and can also be used directly, for instance, to
+write applications using low-level OpenGL ES graphics APIs.
+
+For application developers writing user interfaces, Qt provides
+higher level APIs, like Qt Quick, which are much more suitable than
+the enablers found in the Qt GUI module.
+
+%package -n qt6-gui-devel
+Summary:        Development files for the Qt 6 GUI libraries
+Requires:       libQt6Gui6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Requires:       cmake(Qt6DBus) = %{real_version}
+Requires:       pkgconfig(atspi-2)
+Requires:       pkgconfig(egl)
+Requires:       pkgconfig(libdrm)
+Requires:       pkgconfig(vulkan)
+Requires:       pkgconfig(xkbcommon) >= 0.4.1
+%if 0%{?with_gles}
+Requires:       Mesa-libGLESv3-devel
+Requires:       pkgconfig(gbm)
+Requires:       pkgconfig(glesv2)
+%else
+Requires:       pkgconfig(gl)
+%endif
+
+%description -n qt6-gui-devel
+Development files for the Qt 6 GUI libraries.
+
+%package -n qt6-gui-private-devel
+Summary:        Non-ABI stable API for the Qt 6 GUI libraries
+Requires:       libQt6Gui6 = %{version}
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-kmssupport-private-devel = %{version}
+Requires:       qt6-opengl-private-devel = %{version}
+Requires:       cmake(Qt6DeviceDiscoverySupportPrivate) = %{real_version}
+Requires:       cmake(Qt6EglFSDeviceIntegrationPrivate) = %{real_version}
+Requires:       cmake(Qt6EglFsKmsSupportPrivate) = %{real_version}
+Requires:       cmake(Qt6FbSupportPrivate) = %{real_version}
+Requires:       cmake(Qt6Gui) = %{real_version}
+Requires:       cmake(Qt6InputSupportPrivate) = %{real_version}
+Requires:       pkgconfig(xkbcommon)
+
+%description -n qt6-gui-private-devel
+This package provides private headers of libQt6Gui that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Network6
+Summary:        Qt 6 Network library
+Requires:       libQt6Core6 = %{version}
+Requires:       libQt6DBus6 = %{version}
+# Require network plugins. The library is not very useful without these
+Requires:       qt6-network-tls = %{version}
+Requires:       qt6-networkinformation-glib = %{version}
+Requires:       qt6-networkinformation-nm = %{version}
+
+%description -n libQt6Network6
+Qt Network provides a set of APIs for programming applications that
+use TCP/IP. Operations such as requests, cookies, and sending data
+over HTTP are handled by various C++ classes.
+
+%package -n qt6-network-devel
+Summary:        Development files for the Qt 6 Network library
+Requires:       libQt6Network6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+# Until https://bugreports.qt.io/browse/QTBUG-87776 is fixed, CMake will
+# report the optional WrapOpenSSL dependency is not found. This is expected.
+# openSSL is only needed for the private link target.
+
+%description -n qt6-network-devel
+Development files for the Qt 6 Network library.
+
+%package -n qt6-network-private-devel
+Summary:        Non-ABI stable API for the Qt 6 Network library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       cmake(Qt6Network) = %{real_version}
+%requires_ge %(rpm -q --whatprovides "pkgconfig(openssl)" | grep -v noarch)
+
+%description -n qt6-network-private-devel
+This package provides private headers of libQt6Network that do not have any
+ABI or API guarantees.
+
+%package -n libQt6OpenGL6
+Summary:        Qt 6 OpenGL library
+Requires:       libQt6Widgets6 = %{version}
+
+%description -n libQt6OpenGL6
+The Qt OpenGL module provides an OpenGL widget class that can be used
+like any other Qt widget, except that it opens an OpenGL display
+buffer where the OpenGL API can be used to render the contents.
+
+%package -n qt6-opengl-devel
+Summary:        Development files for the Qt 6 OpenGL library
+Requires:       libQt6OpenGL6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Requires:       cmake(Qt6Gui) = %{real_version}
+%if 0%{?with_gles}
+Requires:       Mesa-libGLESv3-devel
+Requires:       pkgconfig(glesv2)
+%else
+Requires:       pkgconfig(gl)
+%endif
+
+%description -n qt6-opengl-devel
+Development files for the Qt 6 OpenGL library.
+
+%package -n qt6-opengl-private-devel
+Summary:        Non-ABI stable API for the Qt 6 OpenGL library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+Requires:       cmake(Qt6OpenGL) = %{real_version}
+
+%description -n qt6-opengl-private-devel
+This package provides private headers of libQt6OpenGL that do not have any
+ABI or API guarantees.
+
+%package -n libQt6OpenGLWidgets6
+Summary:        Qt 6 OpenGLWidgets library
+Requires:       libQt6Widgets6 = %{version}
+
+%description -n libQt6OpenGLWidgets6
+The Qt OpenGL Widgets module provides an OpenGLWidgets class that can be used
+like any other Qt widget, except that it opens an OpenGL display
+buffer where the OpenGL API can be used to render the contents.
+
+%package -n qt6-openglwidgets-devel
+Summary:        Development files for the Qt 6 OpenGLWidgets library
+Requires:       libQt6OpenGLWidgets6 = %{version}
+Requires:       cmake(Qt6OpenGL) = %{real_version}
+Requires:       cmake(Qt6Widgets) = %{real_version}
+%if 0%{?with_gles}
+Requires:       Mesa-libGLESv3-devel
+Requires:       pkgconfig(glesv2)
+%else
+Requires:       pkgconfig(gl)
+%endif
+
+%description -n qt6-openglwidgets-devel
+Development files for the Qt 6 OpenGLWidgets library.
+
+%package -n libQt6PrintSupport6
+Summary:        Qt 6 PrintSupport library
+Requires:       libQt6Widgets6 = %{version}
+Requires:       qt6-printsupport-cups = %{version}
+
+%description -n libQt6PrintSupport6
+An abstraction over the platform-specific printing systems. Using
+this library, Qt applications can print to attached printers and
+across networks to remote printers. Qt's printing system also
+supports PDF file generation, providing the foundation for basic
+report generation facilities.
+
+%package -n qt6-printsupport-devel
+Summary:        Development files for the Qt 6 PrintSupport library
+# Due to QTBUG-87776, the dependency needs to be in qt6-printsupport-devel
+Requires:       cups-devel
+Requires:       libQt6PrintSupport6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Requires:       cmake(Qt6Gui) = %{real_version}
+Requires:       cmake(Qt6Widgets) = %{real_version}
+
+%description -n qt6-printsupport-devel
+Development files for the Qt 6 PrintSupport library.
+
+%package -n qt6-printsupport-private-devel
+Summary:        Non-ABI stable API for the Qt 6 PrintSupport library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+Requires:       qt6-widgets-private-devel = %{version}
+Requires:       cmake(Qt6PrintSupport) = %{real_version}
+
+%description -n qt6-printsupport-private-devel
+This package provides private headers of libQt6PrintSupport that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Sql6
+Summary:        Qt 6 SQL related library
+Requires:       libQt6Core6 = %{version}
+
+%description -n libQt6Sql6
+A Qt 6 library which is used for connection with an SQL server. You
+will need also a plugin package for a supported SQL server.
+
+%package -n qt6-sql-devel
+Summary:        Development files for the Qt 6 SQL library
+Requires:       libQt6Sql6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Suggests:       qt6-sql-mysql = %{version}
+Suggests:       qt6-sql-postgresql = %{version}
+Suggests:       qt6-sql-sqlite = %{version}
+Suggests:       qt6-sql-unixODBC = %{version}
+
+%description -n qt6-sql-devel
+Development files for the Qt 6 SQL library
+
+%package -n qt6-sql-private-devel
+Summary:        Non-ABI stable API for the Qt 6 SQL library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       cmake(Qt6Sql) = %{real_version}
+
+%description -n qt6-sql-private-devel
+This package provides private headers of libQt6Sql that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Test6
+Summary:        Qt 6 Test library
+Requires:       libQt6Core6 = %{version}
+
+%description -n libQt6Test6
+Qt Test is a framework for unit testing Qt based applications and
+libraries. Qt Test provides functionality commonly found in unit
+testing frameworks as well as extensions for testing graphical user
+interfaces.
+
+%package -n qt6-test-devel
+Summary:        Development files for the Qt 6 Test library
+Requires:       libQt6Test6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+
+%description -n qt6-test-devel
+Development files for the Qt 6 Test library.
+
+%package -n qt6-test-private-devel
+Summary:        Non-ABI stable API for the Qt 6 Test library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       cmake(Qt6Test) = %{real_version}
+
+%description -n qt6-test-private-devel
+This package provides private headers of libQt6Test that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Widgets6
+Summary:        Qt 6 Widgets library
+Requires:       libQt6Gui6 = %{version}
+
+%description -n libQt6Widgets6
+The Qt Widgets library provides a set of UI elements to create classic
+desktop-style user interfaces.
+
+%package -n qt6-widgets-devel
+Summary:        Development files for the Qt 6 Widgets library
+Requires:       libQt6Widgets6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+Requires:       cmake(Qt6Gui) = %{real_version}
+
+%description -n qt6-widgets-devel
+Development files for the Qt 6 Widgets library.
+
+%package -n qt6-widgets-private-devel
+Summary:        Non-ABI stable API for the Qt 6 Widgets library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+Requires:       cmake(Qt6Widgets) = %{real_version}
+
+%description -n qt6-widgets-private-devel
+This package provides private headers of libQt6Widgets that do not have any
+ABI or API guarantees.
+
+%package -n libQt6Xml6
+Summary:        Qt 6 XML library
+Requires:       libQt6Core6 = %{version}
+
+%description -n libQt6Xml6
+The Qt XML module provides C++ implementations of the SAX and DOM
+standards for XML.
+
+%package -n qt6-xml-devel
+Summary:        Development files for the Qt 6 XML library
+Requires:       libQt6Xml6 = %{version}
+Requires:       cmake(Qt6Core) = %{real_version}
+
+%description -n qt6-xml-devel
+Development files for the Qt 6 XML library.
+
+(The module is not actively maintained anymore. Please use the
+QXmlStreamReader and QXmlStreamWriter classes in Qt Core instead.)
+
+%package -n qt6-xml-private-devel
+Summary:        Non-ABI stable API for the Qt 6 XML library
+Requires:       qt6-core-private-devel = %{version}
+Requires:       cmake(Qt6Xml) = %{real_version}
+
+%description -n qt6-xml-private-devel
+This package provides private headers of libQt6Xml that do not have any
+ABI or API guarantees.
+
+%package -n qt6-docs-common
+Summary:        Common files for building documentation
+BuildArch:      noarch
+
+%description -n qt6-docs-common
+This package contains common files used for building Qt documentation.
+
+
+### Static libraries ###
+
+%package -n qt6-exampleicons-devel-static
+Summary:        Qt ExampleIcons module
+# TODO
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+
+%description -n qt6-exampleicons-devel-static
+Qt icon library for examples. This private library can be used by Qt examples.
+
+%package -n qt6-kmssupport-devel-static
+Summary:        Qt KMSSupport module
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+
+%description -n qt6-kmssupport-devel-static
+Qt module to support Kernel Mode Setting.
+
+%package -n qt6-kmssupport-private-devel
+Summary:        Non-ABI stable API for the Qt 6 KMSSupport library
+Requires:       qt6-kmssupport-devel-static = %{version}
+
+%description -n qt6-kmssupport-private-devel
+This package provides private headers of libQt6KmsSupport that do not have any
+ABI or API guarantees.
+
+%package -n qt6-platformsupport-devel-static
+Summary:        Qt PlatformSupport module
+Requires:       qt6-core-private-devel = %{version}
+Requires:       qt6-gui-private-devel = %{version}
+Requires:       pkgconfig(atspi-2)
+Requires:       pkgconfig(egl)
+Requires:       pkgconfig(fontconfig)
+Requires:       pkgconfig(freetype2)
+Requires:       pkgconfig(gl)
+Requires:       pkgconfig(glib-2.0)
+Requires:       pkgconfig(libinput)
+Requires:       pkgconfig(libudev)
+Requires:       pkgconfig(mtdev)
+Requires:       pkgconfig(tslib)
+Requires:       pkgconfig(x11)
+Requires:       pkgconfig(xext)
+Requires:       pkgconfig(xkbcommon) >= 0.4.1
+Requires:       pkgconfig(xkbcommon-x11) >= 0.4.1
+Requires:       pkgconfig(xrender)
+
+%description -n qt6-platformsupport-devel-static
+Qt PlatformSupport module.
+
+%package -n qt6-platformsupport-private-devel
+Summary:        Non-ABI stable API for the  Qt6 PlatformSupport library
+Requires:       qt6-platformsupport-devel-static = %{version}
+
+%description -n qt6-platformsupport-private-devel
+This package provides private headers of libQt6PlatformSupport that do not have
+any ABI or API guarantees.
+
+
+### Plugins ###
+
+%package -n qt6-networkinformation-glib
+Summary:        Network information for QNetworkInformation using GNetworkMonitor
+
+%description -n qt6-networkinformation-glib
+Plugin using GNetworkMonitor to get network information such as the
+reachability, media type...
+
+%package -n qt6-networkinformation-nm
+Summary:        Network information for QNetworkInformation
+# Renamed in Qt 6.2
+Provides:       qt6-network-informationbackends = 6.2.0
+Obsoletes:      qt6-network-informationbackends < 6.2.0
+
+%description -n qt6-networkinformation-nm
+Plugin used to get network information such as the reachability, media type...
+
+%package -n qt6-network-tls
+Summary:        Backends used to handle secure connections
+
+%description -n qt6-network-tls
+TLS (and non-TLS) plugins used by the QSsl classes.
+
+%package -n qt6-platformtheme-gtk3
+Summary:        Qt 6 GTK3 plugin
+Requires:       libQt6Gui6 = %{version}
+Supplements:    (libQt6Gui6 and libgtk-3-0)
+
+%description -n qt6-platformtheme-gtk3
+Qt 6 plugin for better integration with GTK3-based desktop environments.
+
+%package -n qt6-platformtheme-xdgdesktopportal
+Summary:        Qt 6 XDG Desktop Portal Plugin
+Requires:       libQt6Gui6 = %{version}
+
+%description -n qt6-platformtheme-xdgdesktopportal
+Qt 6 plugin for integration with Flatpak and Snap.
+
+%package -n qt6-printsupport-cups
+Summary:        Qt 6 CUPS plugin
+Requires:       libQt6PrintSupport6 = %{version}
+
+%description -n qt6-printsupport-cups
+The Qt printsupport CUPS plugin.
+
+%package -n qt6-sql-mysql
+Summary:        Qt 6 MySQL support
+Requires:       libQt6Sql6 = %{version}
+
+%description -n qt6-sql-mysql
+A plugin to access MySQL servers in Qt applications.
+
+%package -n qt6-sql-postgresql
+Summary:        Qt 6 PostgreSQL plugin
+Requires:       libQt6Sql6 = %{version}
+
+%description -n qt6-sql-postgresql
+A plugin to access PostgreSQL servers in Qt applications.
+
+The QPSQL driver supports version 9 and higher of the PostgreSQL
+server.
+
+%package -n qt6-sql-sqlite
+Summary:        Qt 6 SQLite plugin
+Requires:       libQt6Sql6 = %{version}
+
+%description -n qt6-sql-sqlite
+A plugin to access SQLite databases in Qt applications.
+
+SQLite is an in-process database, which means that it is not
+necessary to have a database server. SQLite operates on a single
+file, which must be set as the database name when opening a
+connection.
+
+%package -n qt6-sql-unixODBC
+Summary:        Qt 6 unixODBC plugin
+Requires:       libQt6Sql6 = %{version}
+
+%description -n qt6-sql-unixODBC
+A plugin to connect to an ODBC driver manager in Qt applications and
+access the available data sources. Note that you also need to install
+and configure ODBC drivers for the ODBC driver manager that is
+installed on your system.
+
+%{qt6_examples_package}
+
+%endif
+
+%prep
+%autosetup -p1 -n %{tar_name}-%{real_version}%{tar_suffix}
+
+# Copy the freetype license file to prevent errors when building docs
+cp src/3rdparty/freetype/LICENSE.txt src/gui/painting/FREETYPE_LICENSE.txt
+sed -i 's#../../3rdparty/freetype/LICENSE.txt#FREETYPE_LICENSE.txt#' src/gui/painting/qt_attribution.json
+
+# Same thing for blake2
+sed -i '/\/3rdparty\/blake2/d' src/corelib/CMakeLists.txt
+
+# We don't want to use these 3rdparty libraries
+rm -r src/3rdparty/{blake2,double-conversion,freetype,harfbuzz-ng,libjpeg,libpng,pcre2,sqlite,xcb,zlib}
+%if %{with system_md4c}
+rm -r src/3rdparty/md4c
+%endif
+
+# Empty file used for the meta packages
+cat >> meta_package << EOF
+This is a meta package, it does not contain any file
+EOF
+
+# Work around an issue with zstd CMake files (boo#1211566)
+# TODO: Remove when the issue is fixed
+sed -i '/zstd CONFIG/d' cmake/FindWrapZSTD.cmake
+
+%build
+%define _lto_cflags %{nil}
+
+# NOTE: ltcg causes linker errors on ppc64
+%cmake_qt6 \
+    -DINSTALL_ARCHDATADIR:STRING=%{_qt6_archdatadir} \
+    -DINSTALL_BINDIR:STRING=%{_qt6_bindir} \
+    -DINSTALL_DATADIR:STRING=%{_qt6_datadir} \
+    -DINSTALL_DESCRIPTIONSDIR:STRING=%{_qt6_descriptionsdir} \
+    -DINSTALL_DOCDIR:STRING=%{_qt6_docdir} \
+    -DINSTALL_EXAMPLESDIR:STRING=%{_qt6_examplesdir} \
+    -DINSTALL_INCLUDEDIR:STRING=%{_qt6_includedir} \
+    -DINSTALL_LIBDIR:STRING=%{_qt6_libdir} \
+    -DINSTALL_LIBEXECDIR:STRING=%{_qt6_libexecdir} \
+    -DINSTALL_MKSPECSDIR:STRING=%{_qt6_mkspecsdir} \
+    -DINSTALL_PLUGINSDIR:STRING=%{_qt6_pluginsdir} \
+    -DINSTALL_QMLDIR:STRING=%{_qt6_qmldir} \
+    -DINSTALL_SYSCONFDIR:STRING=%{_qt6_sysconfdir} \
+    -DINSTALL_TESTSDIR:STRING=%{_qt6_testsdir} \
+    -DINSTALL_TRANSLATIONSDIR:STRING=%{_qt6_translationsdir} \
+    -DBUILD_WITH_PCH:BOOL=FALSE \
+    -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
+    -DQT_BUILD_EXAMPLES:BOOL=TRUE \
+    -DQT_INSTALL_EXAMPLES_SOURCES:BOOL=TRUE \
+    -DQT_BUILD_TESTS:BOOL=FALSE \
+    -DQT_CREATE_VERSIONED_HARD_LINK:BOOL=FALSE \
+    -DQT_DISABLE_RPATH:BOOL=FALSE \
+    -DQT_GENERATE_SBOM:BOOL=FALSE \
+    -DQT_SBOM_GENERATE_JSON:BOOL=FALSE \
+    -DQT_SBOM_VERIFY:BOOL=FALSE \
+%ifnarch ppc64
+    -DCMAKE_INTERPROCEDURAL_OPTIMIZATION:BOOL=TRUE \
+%endif
+    -DFEATURE_elf_private_full_version=TRUE \
+    -DFEATURE_enable_new_dtags:BOOL=TRUE \
+    -DFEATURE_forkfd_pidfd:BOOL=FALSE \
+    -DFEATURE_journald:BOOL=TRUE \
+    -DFEATURE_libproxy:BOOL=TRUE \
+    -DFEATURE_reduce_relocations:BOOL=FALSE \
+    -DFEATURE_relocatable:BOOL=FALSE \
+    -DFEATURE_system_sqlite:BOOL=TRUE \
+    -DFEATURE_system_xcb_xinput:BOOL=TRUE \
+    -DFEATURE_xcb_native_painting:BOOL=TRUE \
+    -DINPUT_openssl:STRING=linked \
+%if 0%{?with_gles}
+    -DINPUT_opengl:STRING=es2 \
+    -DFEATURE_opengles3:BOOL=TRUE
+%endif
+
+%{qt6_build}
+
+%install
+%{qt6_install}
+
+%if !%{qt6_docs_flavor}
+
+# 'BuildFlags: useccache' in the repo prjconf 'taints' qt.toolchain.cmake
+sed -i 's#/var/lib/build/ccache#/usr#g' %{buildroot}%{_qt6_cmakedir}/Qt6/qt.toolchain.cmake
+
+# Empty folders provided by libQt6Core6 and qt6-core-common-devel
+mkdir -p %{buildroot}%{_qt6_sysconfdir}
+mkdir -p %{buildroot}%{_qt6_testsdir}
+mkdir -p %{buildroot}%{_qt6_translationsdir}
+
+%{qt6_link_executables}
+
+# CMake modules for plugins are not useful
+rm %{buildroot}%{_qt6_cmakedir}/*/*Plugin{Config,ConfigVersion,Targets*}.cmake
+
+# There are no private headers
+rm %{buildroot}%{_qt6_mkspecsdir}/modules/qt_lib_concurrent_private.pri
+rm %{buildroot}%{_qt6_mkspecsdir}/modules/qt_lib_openglwidgets_private.pri
+
+# These files are only useful for the Qt continuous integration
+rm %{buildroot}%{_qt6_libexecdir}/ensure_pro_file.cmake
+rm %{buildroot}%{_qt6_libexecdir}/qt-android-runner.py
+rm %{buildroot}%{_qt6_libexecdir}/qt-testrunner.py
+rm %{buildroot}%{_qt6_libexecdir}/sanitizer-testrunner.py
+
+# This is only for Apple platforms and has a python2 dep
+rm -r %{buildroot}%{_qt6_mkspecsdir}/features/uikit
+
+# Not useful for desktop installs
+rm -r %{buildroot}%{_qt6_cmakedir}/Qt6ExamplesAssetDownloaderPrivate
+rm -r %{buildroot}%{_qt6_includedir}/QtExamplesAssetDownloader
+rm %{buildroot}%{_qt6_descriptionsdir}/ExamplesAssetDownloaderPrivate.json
+rm %{buildroot}%{_qt6_libdir}/libQt6ExamplesAssetDownloader.*
+rm %{buildroot}%{_qt6_metatypesdir}/qt6examplesassetdownloaderprivate_*_metatypes.json
+
+# E: env-script-interpreter
+sed -i 's#!/bin/env python3#!/usr/bin/python3#' %{buildroot}%{_qt6_examplesdir}/corelib/serialization/cbordump/cbortag.py
+
+
+%ldconfig_scriptlets -n libQt6Concurrent6
+%ldconfig_scriptlets -n libQt6Core6
+%ldconfig_scriptlets -n libQt6DBus6
+%ldconfig_scriptlets -n libQt6Gui6
+%ldconfig_scriptlets -n libQt6Network6
+%ldconfig_scriptlets -n libQt6OpenGL6
+%ldconfig_scriptlets -n libQt6OpenGLWidgets6
+%ldconfig_scriptlets -n libQt6PrintSupport6
+%ldconfig_scriptlets -n libQt6Sql6
+%ldconfig_scriptlets -n libQt6Test6
+%ldconfig_scriptlets -n libQt6Widgets6
+%ldconfig_scriptlets -n libQt6Xml6
+
+%files devel
+%doc meta_package
+
+%files private-devel
+%doc meta_package
+
+%files common-devel
+# qt6-base-common-devel 'provides' the development related directories
+%dir %{_qt6_cmakedir}
+%dir %{_qt6_cmakedir}/Qt6BuildInternals
+%dir %{_qt6_cmakedir}/Qt6BuildInternals/StandaloneTests
+%dir %{_qt6_descriptionsdir}
+%dir %{_qt6_includedir}
+%dir %{_qt6_metatypesdir}
+%dir %{_qt6_mkspecsdir}
+%dir %{_qt6_mkspecsdir}/modules
+%{_bindir}/androiddeployqt6
+%{_bindir}/androidtestrunner6
+%{_bindir}/qdbuscpp2xml6
+%{_bindir}/qdbusxml2cpp6
+%{_bindir}/qmake6
+%{_bindir}/qt-cmake6
+%{_bindir}/qt-cmake-create6
+%{_bindir}/qt-configure-module6
+%{_bindir}/qtpaths6
+%{_qt6_bindir}/androiddeployqt
+%{_qt6_bindir}/androidtestrunner
+%{_qt6_bindir}/qdbuscpp2xml
+%{_qt6_bindir}/qdbusxml2cpp
+%{_qt6_bindir}/qmake
+%{_qt6_bindir}/qt-cmake
+%{_qt6_bindir}/qt-cmake-create
+%{_qt6_bindir}/qt-configure-module
+%{_qt6_bindir}/qtpaths
+%{_qt6_cmakedir}/Qt6/
+%{_qt6_cmakedir}/Qt6BuildInternals/Qt6BuildInternalsConfig.cmake
+%{_qt6_cmakedir}/Qt6BuildInternals/Qt6BuildInternalsConfigVersion.cmake
+%{_qt6_cmakedir}/Qt6BuildInternals/Qt6BuildInternalsConfigVersionImpl.cmake
+%{_qt6_cmakedir}/Qt6BuildInternals/QtBuildInternalsExtra.cmake
+%{_qt6_cmakedir}/Qt6BuildInternals/QtStandaloneTestTemplateProject/
+%{_qt6_cmakedir}/Qt6BuildInternals/StandaloneTests/QtBaseTestsConfig.cmake
+%{_qt6_cmakedir}/Qt6HostInfo/
+%{_qt6_libexecdir}/cmake_automoc_parser
+%{_qt6_libexecdir}/moc
+%{_qt6_libexecdir}/qlalr
+%{_qt6_libexecdir}/qt-cmake-private
+%{_qt6_libexecdir}/qt-cmake-private-install.cmake
+%{_qt6_libexecdir}/qt-cmake-standalone-test
+%{_qt6_libexecdir}/qt-internal-configure-examples
+%{_qt6_libexecdir}/qt-internal-configure-tests
+%{_qt6_libexecdir}/qvkgen
+%{_qt6_libexecdir}/rcc
+%{_qt6_libexecdir}/syncqt
+%{_qt6_libexecdir}/tracegen
+%{_qt6_libexecdir}/tracepointgen
+%{_qt6_libexecdir}/uic
+%{_qt6_mkspecsdir}/*
+%{_qt6_pkgconfigdir}/Qt6Platform.pc
+%exclude %{_qt6_mkspecsdir}/modules/*.pri
+
+%files -n libQt6Concurrent6
+%{_qt6_libdir}/libQt6Concurrent.so.*
+
+%files -n qt6-concurrent-devel
+%{_qt6_cmakedir}/Qt6Concurrent/
+%{_qt6_descriptionsdir}/Concurrent.json
+%{_qt6_includedir}/QtConcurrent/
+%{_qt6_libdir}/libQt6Concurrent.prl
+%{_qt6_libdir}/libQt6Concurrent.so
+%{_qt6_metatypesdir}/qt6concurrent_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_concurrent.pri
+%{_qt6_pkgconfigdir}/Qt6Concurrent.pc
+
+%files -n libQt6Core6
+%license LICENSES/*
+# libQt6Core6 'provides' the runtime directories except
+# %%_qt6_importsdir and %%qt6_qmldir, owned by libQt6Qml6, %%_qt6_docdir
+# owned by all documentation packages and %%_qt6_sysconfdir,
+# owned by the filesystem package
+%dir %{_qt6_archdatadir}
+%dir %{_qt6_bindir}
+%dir %{_qt6_datadir}
+%dir %{_qt6_examplesdir}
+%dir %{_qt6_libexecdir}
+%dir %{_qt6_pluginsdir}
+%dir %{_qt6_testsdir}
+%dir %{_qt6_translationsdir}
+%{_qt6_libdir}/libQt6Core.so.*
+
+%files -n qt6-core-devel
+%{_qt6_cmakedir}/Qt6Core/
+%{_qt6_cmakedir}/Qt6CoreTools/
+%{_qt6_descriptionsdir}/Core.json
+%{_qt6_includedir}/QtCore/
+%{_qt6_libdir}/libQt6Core.prl
+%{_qt6_libdir}/libQt6Core.so
+%{_qt6_metatypesdir}/qt6core_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_core.pri
+# workaround for boo#1195368, QTBUG-100370
+%{_qt6_mkspecsdir}/modules/qt_lib_core_private.pri
+%{_qt6_pkgconfigdir}/Qt6Core.pc
+%exclude %{_qt6_includedir}/QtCore/%{real_version}
+
+%files -n qt6-core-private-devel
+%dir %{_qt6_includedir}/QtCore/
+%{_qt6_includedir}/QtCore/%{real_version}/
+
+%files -n libQt6DBus6
+%{_qt6_libdir}/libQt6DBus.so.*
+
+%files -n qt6-dbus-devel
+%{_qt6_cmakedir}/Qt6DBus/
+%{_qt6_cmakedir}/Qt6DBusTools/
+%{_qt6_descriptionsdir}/DBus.json
+%{_qt6_includedir}/QtDBus/
+%{_qt6_libdir}/libQt6DBus.prl
+%{_qt6_libdir}/libQt6DBus.so
+%{_qt6_metatypesdir}/qt6dbus_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_dbus.pri
+%{_qt6_pkgconfigdir}/Qt6DBus.pc
+%exclude %{_qt6_includedir}/QtDBus/%{real_version}
+
+%files -n qt6-dbus-private-devel
+%dir %{_qt6_includedir}/QtDBus
+%{_qt6_includedir}/QtDBus/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_dbus_private.pri
+
+%files -n libQt6Gui6
+%dir %{_qt6_pluginsdir}/platformthemes
+%{_qt6_libdir}/libQt6EglFSDeviceIntegration.so.*
+%{_qt6_libdir}/libQt6EglFsKmsGbmSupport.so.*
+%{_qt6_libdir}/libQt6EglFsKmsSupport.so.*
+%{_qt6_libdir}/libQt6Gui.so.*
+%{_qt6_libdir}/libQt6XcbQpa.so.*
+%{_qt6_pluginsdir}/egldeviceintegrations/
+%{_qt6_pluginsdir}/generic/
+%{_qt6_pluginsdir}/imageformats/
+%{_qt6_pluginsdir}/platforminputcontexts/
+%{_qt6_pluginsdir}/platforms/
+%{_qt6_pluginsdir}/xcbglintegrations/
+
+%files -n qt6-gui-devel
+%{_qt6_cmakedir}/Qt6Gui/
+%{_qt6_cmakedir}/Qt6GuiTools/
+%{_qt6_descriptionsdir}/Gui.json
+%{_qt6_includedir}/QtGui/
+%{_qt6_libdir}/libQt6Gui.prl
+%{_qt6_libdir}/libQt6Gui.so
+%{_qt6_metatypesdir}/qt6gui_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_gui.pri
+%{_qt6_pkgconfigdir}/Qt6Gui.pc
+%exclude %{_qt6_includedir}/QtGui/%{real_version}
+
+%files -n qt6-gui-private-devel
+%dir %{_qt6_includedir}/QtGui
+%{_qt6_cmakedir}/Qt6EglFSDeviceIntegrationPrivate/
+%{_qt6_cmakedir}/Qt6EglFsKmsGbmSupportPrivate/
+%{_qt6_cmakedir}/Qt6EglFsKmsSupportPrivate/
+%{_qt6_cmakedir}/Qt6XcbQpaPrivate/
+%{_qt6_descriptionsdir}/EglFSDeviceIntegrationPrivate.json
+%{_qt6_descriptionsdir}/EglFsKmsGbmSupportPrivate.json
+%{_qt6_descriptionsdir}/EglFsKmsSupportPrivate.json
+%{_qt6_descriptionsdir}/XcbQpaPrivate.json
+%{_qt6_includedir}/QtEglFSDeviceIntegration/
+%{_qt6_includedir}/QtEglFsKmsGbmSupport/
+%{_qt6_includedir}/QtEglFsKmsSupport/
+%{_qt6_includedir}/QtGui/%{real_version}/
+%{_qt6_libdir}/libQt6EglFSDeviceIntegration.prl
+%{_qt6_libdir}/libQt6EglFSDeviceIntegration.so
+%{_qt6_libdir}/libQt6EglFsKmsGbmSupport.prl
+%{_qt6_libdir}/libQt6EglFsKmsGbmSupport.so
+%{_qt6_libdir}/libQt6EglFsKmsSupport.prl
+%{_qt6_libdir}/libQt6EglFsKmsSupport.so
+%{_qt6_libdir}/libQt6XcbQpa.prl
+%{_qt6_libdir}/libQt6XcbQpa.so
+%{_qt6_metatypesdir}/qt6eglfsdeviceintegrationprivate_*_metatypes.json
+%{_qt6_metatypesdir}/qt6eglfskmsgbmsupportprivate_*_metatypes.json
+%{_qt6_metatypesdir}/qt6eglfskmssupportprivate_*_metatypes.json
+%{_qt6_metatypesdir}/qt6xcbqpaprivate_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_eglfs_kms_gbm_support_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_eglfs_kms_support_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_eglfsdeviceintegration_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_gui_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_xcb_qpa_lib_private.pri
+
+%files -n libQt6Network6
+%{_qt6_libdir}/libQt6Network.so.*
+
+%files -n qt6-network-devel
+%{_qt6_cmakedir}/Qt6Network/
+%{_qt6_descriptionsdir}/Network.json
+%{_qt6_includedir}/QtNetwork/
+%{_qt6_libdir}/libQt6Network.prl
+%{_qt6_libdir}/libQt6Network.so
+%{_qt6_metatypesdir}/qt6network_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_network.pri
+%{_qt6_pkgconfigdir}/Qt6Network.pc
+%exclude %{_qt6_includedir}/QtNetwork/%{real_version}
+
+%files -n qt6-network-private-devel
+%dir %{_qt6_includedir}/QtNetwork
+%{_qt6_includedir}/QtNetwork/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_network_private.pri
+
+%files -n libQt6OpenGL6
+%{_qt6_libdir}/libQt6OpenGL.so.*
+
+%files -n qt6-opengl-devel
+%{_qt6_cmakedir}/Qt6OpenGL/
+%{_qt6_descriptionsdir}/OpenGL.json
+%{_qt6_includedir}/QtOpenGL/
+%{_qt6_libdir}/libQt6OpenGL.prl
+%{_qt6_libdir}/libQt6OpenGL.so
+%{_qt6_metatypesdir}/qt6opengl_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_opengl.pri
+%{_qt6_pkgconfigdir}/Qt6OpenGL.pc
+%exclude %{_qt6_includedir}/QtOpenGL/%{real_version}
+
+%files -n qt6-opengl-private-devel
+%dir %{_qt6_includedir}/QtOpenGL
+%{_qt6_includedir}/QtOpenGL/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_opengl_private.pri
+
+%files -n libQt6OpenGLWidgets6
+%{_qt6_libdir}/libQt6OpenGLWidgets.so.*
+
+%files -n qt6-openglwidgets-devel
+%{_qt6_cmakedir}/Qt6OpenGLWidgets/
+%{_qt6_descriptionsdir}/OpenGLWidgets.json
+%{_qt6_includedir}/QtOpenGLWidgets/
+%{_qt6_libdir}/libQt6OpenGLWidgets.prl
+%{_qt6_libdir}/libQt6OpenGLWidgets.so
+%{_qt6_metatypesdir}/qt6openglwidgets_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_openglwidgets.pri
+%{_qt6_pkgconfigdir}/Qt6OpenGLWidgets.pc
+
+%files -n libQt6PrintSupport6
+%dir %{_qt6_pluginsdir}/printsupport
+%{_qt6_libdir}/libQt6PrintSupport.so.*
+
+%files -n qt6-printsupport-devel
+%{_qt6_cmakedir}/Qt6PrintSupport/
+%{_qt6_descriptionsdir}/PrintSupport.json
+%{_qt6_includedir}/QtPrintSupport/
+%{_qt6_libdir}/libQt6PrintSupport.prl
+%{_qt6_libdir}/libQt6PrintSupport.so
+%{_qt6_metatypesdir}/qt6printsupport_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_printsupport.pri
+%{_qt6_pkgconfigdir}/Qt6PrintSupport.pc
+%exclude %{_qt6_includedir}/QtPrintSupport/%{real_version}
+
+%files -n qt6-printsupport-private-devel
+%dir %{_qt6_includedir}/QtPrintSupport
+%{_qt6_includedir}/QtPrintSupport/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_printsupport_private.pri
+
+%files -n libQt6Sql6
+%dir %{_qt6_pluginsdir}/sqldrivers
+%{_qt6_libdir}/libQt6Sql.so.*
+
+%files -n qt6-sql-devel
+%{_qt6_cmakedir}/Qt6Sql/
+%{_qt6_descriptionsdir}/Sql.json
+%{_qt6_includedir}/QtSql/
+%{_qt6_libdir}/libQt6Sql.prl
+%{_qt6_libdir}/libQt6Sql.so
+%{_qt6_mkspecsdir}/modules/qt_lib_sql.pri
+%{_qt6_metatypesdir}/qt6sql_*_metatypes.json
+%{_qt6_pkgconfigdir}/Qt6Sql.pc
+%exclude %{_qt6_includedir}/QtSql/%{real_version}
+
+%files -n qt6-sql-private-devel
+%dir %{_qt6_includedir}/QtSql
+%{_qt6_includedir}/QtSql/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_sql_private.pri
+
+%files -n libQt6Test6
+%{_qt6_libdir}/libQt6Test.so.*
+
+%files -n qt6-test-devel
+%{_qt6_cmakedir}/Qt6Test/
+%{_qt6_descriptionsdir}/Test.json
+%{_qt6_includedir}/QtTest/
+%{_qt6_libdir}/libQt6Test.prl
+%{_qt6_libdir}/libQt6Test.so
+%{_qt6_metatypesdir}/qt6test_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_testlib.pri
+%{_qt6_pkgconfigdir}/Qt6Test.pc
+%exclude %{_qt6_includedir}/QtTest/%{real_version}
+
+%files -n qt6-test-private-devel
+%dir %{_qt6_includedir}/QtTest
+%{_qt6_includedir}/QtTest/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_testlib_private.pri
+
+%files -n libQt6Widgets6
+%{_qt6_libdir}/libQt6Widgets.so.*
+
+%files -n qt6-widgets-devel
+%{_qt6_cmakedir}/Qt6Widgets/
+%{_qt6_descriptionsdir}/Widgets.json
+%{_qt6_cmakedir}/Qt6WidgetsTools/
+%{_qt6_includedir}/QtWidgets/
+%{_qt6_libdir}/libQt6Widgets.prl
+%{_qt6_libdir}/libQt6Widgets.so
+%{_qt6_metatypesdir}/qt6widgets_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_widgets.pri
+%{_qt6_pkgconfigdir}/Qt6Widgets.pc
+%exclude %{_qt6_includedir}/QtWidgets/%{real_version}
+
+%files -n qt6-widgets-private-devel
+%dir %{_qt6_includedir}/QtWidgets
+%{_qt6_includedir}/QtWidgets/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_widgets_private.pri
+
+%files -n libQt6Xml6
+%{_qt6_libdir}/libQt6Xml.so.*
+
+%files -n qt6-xml-devel
+%{_qt6_cmakedir}/Qt6Xml/
+%{_qt6_descriptionsdir}/Xml.json
+%{_qt6_includedir}/QtXml/
+%{_qt6_libdir}/libQt6Xml.prl
+%{_qt6_libdir}/libQt6Xml.so
+%{_qt6_metatypesdir}/qt6xml_*_metatypes.json
+%{_qt6_mkspecsdir}/modules/qt_lib_xml.pri
+%{_qt6_pkgconfigdir}/Qt6Xml.pc
+%exclude %{_qt6_includedir}/QtXml/%{real_version}
+
+%files -n qt6-xml-private-devel
+%dir %{_qt6_includedir}/QtXml
+%{_qt6_includedir}/QtXml/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_xml_private.pri
+
+%files -n qt6-docs-common
+%dir %{_qt6_docdir}
+%{_qt6_docdir}/config/
+%{_qt6_docdir}/global/
+
+### Static libraries ###
+
+%files -n qt6-exampleicons-devel-static
+%doc src/assets/icons/README
+%{_qt6_cmakedir}/Qt6ExampleIconsPrivate/
+%{_qt6_descriptionsdir}/ExampleIconsPrivate.json
+%{_qt6_includedir}/QtExampleIcons/
+%{_qt6_libdir}/libQt6ExampleIcons.a
+%{_qt6_libdir}/libQt6ExampleIcons.prl
+# There's no mistake, this folder needs to be installed
+# These are CMake objects files which are not part of any library
+%dir %{_qt6_archdatadir}/objects-*
+%{_qt6_archdatadir}/objects-*/ExampleIconsPrivate_resources_1/
+%{_qt6_metatypesdir}/qt6exampleiconsprivate_*_metatypes.json
+
+%files -n qt6-kmssupport-devel-static
+%{_qt6_cmakedir}/Qt6KmsSupportPrivate/
+%{_qt6_descriptionsdir}/KmsSupportPrivate.json
+%{_qt6_includedir}/QtKmsSupport/
+%{_qt6_libdir}/libQt6KmsSupport.a
+%{_qt6_libdir}/libQt6KmsSupport.prl
+%{_qt6_metatypesdir}/qt6kmssupportprivate_*_metatypes.json
+%exclude %{_qt6_includedir}/QtKmsSupport/%{real_version}
+
+%files -n qt6-kmssupport-private-devel
+%dir %{_qt6_includedir}/QtKmsSupport
+%{_qt6_includedir}/QtKmsSupport/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_kms_support_private.pri
+
+%files -n qt6-platformsupport-devel-static
+%{_qt6_cmakedir}/Qt6DeviceDiscoverySupportPrivate/
+%{_qt6_cmakedir}/Qt6FbSupportPrivate/
+%{_qt6_cmakedir}/Qt6InputSupportPrivate/
+%{_qt6_descriptionsdir}/DeviceDiscoverySupportPrivate.json
+%{_qt6_descriptionsdir}/FbSupportPrivate.json
+%{_qt6_descriptionsdir}/InputSupportPrivate.json
+%{_qt6_includedir}/QtDeviceDiscoverySupport/
+%{_qt6_includedir}/QtFbSupport/
+%{_qt6_includedir}/QtInputSupport/
+%{_qt6_libdir}/libQt6DeviceDiscoverySupport.a
+%{_qt6_libdir}/libQt6DeviceDiscoverySupport.prl
+%{_qt6_libdir}/libQt6FbSupport.a
+%{_qt6_libdir}/libQt6FbSupport.prl
+%{_qt6_libdir}/libQt6InputSupport.a
+%{_qt6_libdir}/libQt6InputSupport.prl
+%{_qt6_metatypesdir}/qt6devicediscoverysupportprivate_*_metatypes.json
+%{_qt6_metatypesdir}/qt6fbsupportprivate_*_metatypes.json
+%{_qt6_metatypesdir}/qt6inputsupportprivate_*_metatypes.json
+%exclude %{_qt6_includedir}/QtDeviceDiscoverySupport/%{real_version}
+%exclude %{_qt6_includedir}/QtFbSupport/%{real_version}
+%exclude %{_qt6_includedir}/QtInputSupport/%{real_version}
+
+%files -n qt6-platformsupport-private-devel
+%dir %{_qt6_includedir}/QtDeviceDiscoverySupport
+%dir %{_qt6_includedir}/QtFbSupport
+%dir %{_qt6_includedir}/QtInputSupport
+%{_qt6_includedir}/QtDeviceDiscoverySupport/%{real_version}/
+%{_qt6_includedir}/QtFbSupport/%{real_version}/
+%{_qt6_includedir}/QtInputSupport/%{real_version}/
+%{_qt6_mkspecsdir}/modules/qt_lib_devicediscovery_support_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_fb_support_private.pri
+%{_qt6_mkspecsdir}/modules/qt_lib_input_support_private.pri
+
+### Plugins ###
+
+%files -n qt6-networkinformation-glib
+%dir %{_qt6_pluginsdir}/networkinformation/
+%{_qt6_pluginsdir}/networkinformation/libqglib.so
+
+%files -n qt6-networkinformation-nm
+%dir %{_qt6_pluginsdir}/networkinformation/
+%{_qt6_pluginsdir}/networkinformation/libqnetworkmanager.so
+
+%files -n qt6-network-tls
+%{_qt6_pluginsdir}/tls/
+
+%files -n qt6-platformtheme-gtk3
+%{_qt6_pluginsdir}/platformthemes/libqgtk3.so
+
+%files -n qt6-platformtheme-xdgdesktopportal
+%{_qt6_pluginsdir}/platformthemes/libqxdgdesktopportal.so
+
+%files -n qt6-printsupport-cups
+%{_qt6_pluginsdir}/printsupport/libcupsprintersupport.so
+
+%files -n qt6-sql-mysql
+%{_qt6_pluginsdir}/sqldrivers/libqsqlmysql.so
+
+%files -n qt6-sql-postgresql
+%{_qt6_pluginsdir}/sqldrivers/libqsqlpsql.so
+
+%files -n qt6-sql-sqlite
+%{_qt6_pluginsdir}/sqldrivers/libqsqlite.so
+
+%files -n qt6-sql-unixODBC
+%{_qt6_pluginsdir}/sqldrivers/libqsqlodbc.so
+
+%endif
+
+%changelog
diff --git a/qtbase-everywhere-src-6.7.2.tar.xz b/qtbase-everywhere-src-6.7.2.tar.xz
new file mode 100644
index 0000000..b05d17f
--- /dev/null
+++ b/qtbase-everywhere-src-6.7.2.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5f22a5e10fb162895ded7de0963328e7307611c688487b5d152c9ee64767599
+size 49364504
diff --git a/qtbase-everywhere-src-6.7.3.tar.xz b/qtbase-everywhere-src-6.7.3.tar.xz
new file mode 100644
index 0000000..be1fa7e
--- /dev/null
+++ b/qtbase-everywhere-src-6.7.3.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ccbb9ab055205ac76632c9eeddd1ed6fc66936fc56afc2ed0fd5d9e23da3097
+size 49426156
diff --git a/qtbase-everywhere-src-6.8.0.tar.xz b/qtbase-everywhere-src-6.8.0.tar.xz
new file mode 100644
index 0000000..237efe3
--- /dev/null
+++ b/qtbase-everywhere-src-6.8.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1bad481710aa27f872de6c9f72651f89a6107f0077003d0ebfcc9fd15cba3c75
+size 49819628
diff --git a/qtbase-everywhere-src-6.8.1.tar.xz b/qtbase-everywhere-src-6.8.1.tar.xz
new file mode 100644
index 0000000..acb87e3
--- /dev/null
+++ b/qtbase-everywhere-src-6.8.1.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40b14562ef3bd779bc0e0418ea2ae08fa28235f8ea6e8c0cb3bce1d6ad58dcaf
+size 48220752
diff --git a/qtbase-everywhere-src-6.8.2.tar.xz b/qtbase-everywhere-src-6.8.2.tar.xz
new file mode 100644
index 0000000..cb4064f
--- /dev/null
+++ b/qtbase-everywhere-src-6.8.2.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:012043ce6d411e6e8a91fdc4e05e6bedcfa10fcb1347d3c33908f7fdd10dfe05
+size 48264736