[packages/qt6] up to 6.7.3

atler atler at pld-linux.org
Sat Sep 28 12:14:40 CEST 2024


commit 7135573a1ee00c1cd5ca848e0df213e58271b714
Author: Jan Palus <atler at pld-linux.org>
Date:   Sat Sep 28 12:14:20 2024 +0200

    up to 6.7.3

 CVE-2024-39936-qtbase-6.7.patch | 138 ----------------------------------------
 gcc14.patch                     |  58 -----------------
 qt6.spec                        |  24 +++----
 3 files changed, 10 insertions(+), 210 deletions(-)
---
diff --git a/qt6.spec b/qt6.spec
index 5cc2021..c404ab3 100644
--- a/qt6.spec
+++ b/qt6.spec
@@ -103,20 +103,18 @@
 Summary:	Qt6 Library
 Summary(pl.UTF-8):	Biblioteka Qt6
 Name:		qt6
-Version:	6.7.2
-Release:	4
+Version:	6.7.3
+Release:	1
 License:	LGPL v3 or GPL v2 or GPL v3 or commercial
 Group:		X11/Libraries
 Source0:	https://download.qt.io/official_releases/qt/6.7/%{version}/single/qt-everywhere-src-%{version}.tar.xz
-# Source0-md5:	06d35b47349c7c0a45710daad359e07b
+# Source0-md5:	3efadf18f1e16e3271abd09c606d3c9b
 Patch0:		system-cacerts.patch
 Patch1:		ninja-program.patch
 Patch2:		%{name}-gn.patch
 Patch3:		no-implicit-sse2.patch
 Patch4:		x32.patch
 Patch5:		qtwebengine-cmake-build-type.patch
-Patch6:		CVE-2024-39936-qtbase-6.7.patch
-Patch7:		gcc14.patch
 URL:		https://www.qt.io/
 %{?with_directfb:BuildRequires:	DirectFB-devel}
 BuildRequires:	EGL-devel
@@ -3673,8 +3671,6 @@ narzędzia.
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
-%patch6 -p1 -d qtbase
-%patch7 -p1 -d qtbase
 
 %{__sed} -i -e 's,usr/X11R6/,usr/,g' qtbase/mkspecs/linux-g++-64/qmake.conf
 
@@ -5288,13 +5284,13 @@ rm -rf $RPM_BUILD_ROOT
 
 %files -n Qt6Multimedia-plugin-gstreamer-devel
 %defattr(644,root,root,755)
-%{_libdir}/libQt6QGstreamerMediaPlugin.a
-%{_libdir}/libQt6QGstreamerMediaPlugin.prl
-%{_includedir}/qt6/QtQGstreamerMediaPlugin
-%{_libdir}/cmake/Qt6QGstreamerMediaPluginPrivate
-%{qt6dir}/metatypes/qt6qgstreamermediapluginprivate_pld_metatypes.json
-%{qt6dir}/mkspecs/modules/qt_lib_qgstreamermediaplugin_private.pri
-%{qt6dir}/modules/QGstreamerMediaPluginPrivate.json
+%{_libdir}/libQt6QGstreamerMediaPluginImpl.a
+%{_libdir}/libQt6QGstreamerMediaPluginImpl.prl
+%{_includedir}/qt6/QtQGstreamerMediaPluginImpl
+%{_libdir}/cmake/Qt6QGstreamerMediaPluginImplPrivate
+%{qt6dir}/metatypes/qt6qgstreamermediapluginimplprivate_pld_metatypes.json
+%{qt6dir}/mkspecs/modules/qt_lib_qgstreamermediapluginimpl_private.pri
+%{qt6dir}/modules/QGstreamerMediaPluginImplPrivate.json
 
 %files -n Qt6Network
 %defattr(644,root,root,755)
diff --git a/CVE-2024-39936-qtbase-6.7.patch b/CVE-2024-39936-qtbase-6.7.patch
deleted file mode 100644
index bef53fb..0000000
--- a/CVE-2024-39936-qtbase-6.7.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp
-index 0abd99b9bc2..3631b13dc85 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 6766989690c..1e4161d1fdf 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 c42290feca4..061f20fd426 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/gcc14.patch b/gcc14.patch
deleted file mode 100644
index d5bd600..0000000
--- a/gcc14.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 39fa7e7bef90be2940c5f736935f963e3969e0bd Mon Sep 17 00:00:00 2001
-From: Dmitry Shachnev <mitya57 at gmail.com>
-Date: Sat, 27 Jul 2024 23:03:07 +0300
-Subject: Use _Float16 only when SSE2 is enabled
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-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 at intel.com>
-Reviewed-by: Edward Welbourne <edward.welbourne at qt.io>
----
- src/corelib/global/qtypes.h | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-(limited to 'src/corelib/global/qtypes.h')
-
-diff --git a/src/corelib/global/qtypes.h b/src/corelib/global/qtypes.h
-index db9ba38e4c..28458f63c2 100644
---- a/src/corelib/global/qtypes.h
-+++ b/src/corelib/global/qtypes.h
-@@ -263,13 +263,12 @@ using NativeFloat16Type = std::float16_t;
- // 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;
--- 
-cgit v1.2.3
-
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/qt6.git/commitdiff/7135573a1ee00c1cd5ca848e0df213e58271b714



More information about the pld-cvs-commit mailing list