diff options
Diffstat (limited to 'devel/qt6-base/files')
5 files changed, 137 insertions, 51 deletions
diff --git a/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake deleted file mode 100644 index 561cc85a2ecd..000000000000 --- a/devel/qt6-base/files/patch-cmake_QtFlagHandlingHelpers.cmake +++ /dev/null @@ -1,13 +0,0 @@ ---- cmake/QtFlagHandlingHelpers.cmake.orig 2024-09-18 16:48:24 UTC -+++ cmake/QtFlagHandlingHelpers.cmake -@@ -177,6 +177,10 @@ function(qt_internal_add_link_flags_no_undefined targe - set(no_undefined_flag "-Wl,--no-undefined") - endif() - -+ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -+ set(no_undefined_flag "") -+ endif() -+ - set(CMAKE_REQUIRED_LINK_OPTIONS ${previous_CMAKE_REQUIRED_LINK_OPTIONS}) - - if (NOT HAVE_DASH_UNDEFINED_SYMBOLS AND NOT HAVE_DASH_DASH_NO_UNDEFINED) diff --git a/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake b/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake deleted file mode 100644 index 7899d3825fba..000000000000 --- a/devel/qt6-base/files/patch-cmake_QtRpathHelpers.cmake +++ /dev/null @@ -1,11 +0,0 @@ ---- cmake/QtRpathHelpers.cmake.orig 2023-09-21 19:24:26 UTC -+++ cmake/QtRpathHelpers.cmake -@@ -8,6 +8,8 @@ function(qt_internal_get_relative_rpath_base_token out - set(rpath_rel_base "@loader_path") - elseif(LINUX OR SOLARIS OR FREEBSD OR HURD OR OPENBSD) - set(rpath_rel_base "$ORIGIN") -+ elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") -+ set(rpath_rel_base "$ORIGIN") - else() - set(rpath_rel_base "NO_KNOWN_RPATH_REL_BASE") - endif() diff --git a/devel/qt6-base/files/patch-sock_seqpacket b/devel/qt6-base/files/patch-sock_seqpacket new file mode 100644 index 000000000000..0ce628239939 --- /dev/null +++ b/devel/qt6-base/files/patch-sock_seqpacket @@ -0,0 +1,105 @@ +https://codereview.qt-project.org/c/qt/qtbase/+/681531 +https://codereview.qt-project.org/c/qt/qtbase/+/682568 + +From 8e06365bee31ef5a1980b7b24d1564e3d769cfc7 Mon Sep 17 00:00:00 2001 +From: Gleb Popov <arrowd@FreeBSD.org> +Date: Thu, 2 Oct 2025 13:14:54 +0300 +Subject: [PATCH] QNativeSocketEngine::read: Only treat readBytes==0 as a EOF + condition with stream sockets + +This change also covers SOCK_SEQPACKET type of sockets, which isn't great, +but allows to avoid an endless polling loop when waiting for read on +a disconnected socket. + +Pick-to: 6.10 +Change-Id: I6117b97c2c9b775e9e6fe9757bf4374365e3227d +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +--- + src/network/socket/qnativesocketengine.cpp | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git src/network/socket/qnativesocketengine.cpp src/network/socket/qnativesocketengine.cpp +index f33e5a26bd94..4c83ef7e5df6 100644 +--- src/network/socket/qnativesocketengine.cpp ++++ src/network/socket/qnativesocketengine.cpp +@@ -910,12 +910,11 @@ qint64 QNativeSocketEngine::read(char *data, qint64 maxSize) + + qint64 readBytes = d->nativeRead(data, maxSize); + +- // Handle remote close +- if (readBytes == 0 && (d->socketType == QAbstractSocket::TcpSocket +-#ifndef QT_NO_SCTP +- || d->socketType == QAbstractSocket::SctpSocket +-#endif +- )) { ++ // Handle remote close. ++ // Non-datagram socket types signal the EOF state with a zero read. ++ // Note that it is perfectly fine to have a 0-byte message with datagram ++ // sockets (SOCK_DGRAM or SOCK_SEQPACKET). ++ if (readBytes == 0 && d->socketType != QAbstractSocket::UdpSocket) { + d->setError(QAbstractSocket::RemoteHostClosedError, + QNativeSocketEnginePrivate::RemoteHostClosedErrorString); + close(); +-- +2.43.0 + +From a395c091a56781352113670b72ba619367486e7e Mon Sep 17 00:00:00 2001 +From: Gleb Popov <arrowd@FreeBSD.org> +Date: Tue, 7 Oct 2025 10:53:18 +0300 +Subject: [PATCH] Teach QNativeSocketEnginePrivate::fetchConnectionParameters() + about SOCK_SEQPACKET + +Pick-to: 6.10 +Change-Id: I4136ef3b4c198e3bd155884bde53171bd34959e4 +Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> +--- + .../socket/qnativesocketengine_unix.cpp | 23 ++++++++++++------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git src/network/socket/qnativesocketengine_unix.cpp src/network/socket/qnativesocketengine_unix.cpp +index b5fbb5c2e003..bcd9aecdea97 100644 +--- src/network/socket/qnativesocketengine_unix.cpp ++++ src/network/socket/qnativesocketengine_unix.cpp +@@ -1244,6 +1244,7 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() + QT_SOCKOPTLEN_T valueSize = sizeof(int); + if (::getsockopt(socketDescriptor, SOL_SOCKET, SO_TYPE, &value, &valueSize) == 0) { + if (value == SOCK_STREAM) { ++ socketType = QAbstractSocket::TcpSocket; + #ifndef QT_NO_SCTP + if (option(QNativeSocketEngine::MaxStreamsSocketOption) != -1) { + socketType = QAbstractSocket::SctpSocket; +@@ -1266,17 +1267,23 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters() + return false; + } + } +- } else { +- socketType = QAbstractSocket::TcpSocket; + } +-#else +- socketType = QAbstractSocket::TcpSocket; ++#endif ++ } else if (value == SOCK_DGRAM) { ++ socketType = QAbstractSocket::UdpSocket; ++#ifdef SOCK_SEQPACKET ++ } else if (value == SOCK_SEQPACKET) { ++ // We approximate the SEQPACKET socket type to TCP, because ++ // this enum is actually used to determine if the socket type has ++ // a notion of connection. SOCK_DGRAM are connectionless, while ++ // SOCK_STREAM and SOCK_SEQPACKET are connection-orientired. ++ // This mapping is still suboptimal, because it is possible to send ++ // a 0-byte packet via SEQPACKET socket and Qt will treat it as ++ // a disconnect. ++ socketType = QAbstractSocket::TcpSocket; + #endif + } else { +- if (value == SOCK_DGRAM) +- socketType = QAbstractSocket::UdpSocket; +- else +- socketType = QAbstractSocket::UnknownSocketType; ++ socketType = QAbstractSocket::UnknownSocketType; + } + } + #if defined (QNATIVESOCKETENGINE_DEBUG) +-- +2.43.0 + diff --git a/devel/qt6-base/files/patch-src_corelib_global_qcomparehelpers.h b/devel/qt6-base/files/patch-src_corelib_global_qcomparehelpers.h deleted file mode 100644 index 5d37ac721415..000000000000 --- a/devel/qt6-base/files/patch-src_corelib_global_qcomparehelpers.h +++ /dev/null @@ -1,27 +0,0 @@ -Suppress spurious zero as null pointer constant warnings which cause errors -in www/dooble due to -Werror being passed. This is the same problem as in -qcompare.h that upstream suppresses for GCC. - -/usr/local/include/qt6/QtCore/qfloat16.h:209:5: error: zero as null pointer constant [-Werror,-Wzero-as-null-pointer-constant] -... -/usr/local/include/qt6/QtCore/qcomparehelpers.h:211:43: note: expanded from macro 'QT_DECLARE_ORDERING_HELPER_TEMPLATE' - 211 | { return compareThreeWay(lhs, rhs) >= 0; } - ---- src/corelib/global/qcomparehelpers.h.orig 2025-02-19 13:05:34 UTC -+++ src/corelib/global/qcomparehelpers.h -@@ -316,6 +316,7 @@ orderingFlagsFor(T t) noexcept - - #define QT_DECLARE_ORDERING_HELPER_TEMPLATE(OrderingType, LeftType, RightType, Constexpr, \ - Noexcept, ...) \ -+ QT_WARNING_DISABLE_CLANG("-Wzero-as-null-pointer-constant") \ - __VA_ARGS__ \ - friend Constexpr bool operator<(LeftType const &lhs, RightType const &rhs) Noexcept \ - { \ -@@ -357,6 +358,7 @@ orderingFlagsFor(T t) noexcept - // Helpers for reversed ordering, using the existing compareThreeWay() function. - #define QT_DECLARE_REVERSED_ORDERING_HELPER_TEMPLATE(OrderingType, LeftType, RightType, Constexpr, \ - Noexcept, ...) \ -+ QT_WARNING_DISABLE_CLANG("-Wzero-as-null-pointer-constant") \ - __VA_ARGS__ \ - friend Constexpr bool operator<(RightType const &lhs, LeftType const &rhs) Noexcept \ - { return is_gt(compareThreeWay(rhs, lhs)); } \ diff --git a/devel/qt6-base/files/patch-src_corelib_io_qprocess__unix.cpp b/devel/qt6-base/files/patch-src_corelib_io_qprocess__unix.cpp new file mode 100644 index 000000000000..67daf0bcd3b5 --- /dev/null +++ b/devel/qt6-base/files/patch-src_corelib_io_qprocess__unix.cpp @@ -0,0 +1,32 @@ +Use dlsym to access environ. This avoids undefined references during linking +with -Wl,-no-undefined. + +See https://reviews.freebsd.org/D30842 + +--- src/corelib/io/qprocess_unix.cpp.orig 2025-08-11 04:54:51 UTC ++++ src/corelib/io/qprocess_unix.cpp +@@ -59,10 +59,9 @@ + # define _PATH_TTY _PATH_DEV "tty" + #endif + +-#ifdef Q_OS_FREEBSD +-__attribute__((weak)) +-#endif ++#ifndef Q_OS_FREEBSD + extern char **environ; ++#endif + + QT_BEGIN_NAMESPACE + +@@ -74,6 +73,11 @@ QProcessEnvironment QProcessEnvironment::systemEnviron + { + QProcessEnvironment env; + const char *entry; ++#ifdef Q_OS_FREEBSD ++ static char* nullenv = nullptr; ++ char ***environ_p = reinterpret_cast<char***>(dlsym(RTLD_DEFAULT, "environ")); ++ char **environ = environ_p ? *environ_p : &nullenv; ++#endif + for (int count = 0; (entry = environ[count]); ++count) { + const char *equal = strchr(entry, '='); + if (!equal) |