qt6_base: bump version

This commit is contained in:
Gerasim Troeglazov
2023-11-06 12:14:30 +10:00
parent dd525e9ac9
commit ed4193f7b9
2 changed files with 140 additions and 373 deletions

View File

@@ -1,9 +1,8 @@
From c7aea58ebe63b9036d33c358f607bf02542ad3a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= <revol@free.fr>
Date: Mon, 11 Feb 2019 15:53:49 +1000
From 0f12f9b9bcb2333cc9d9b877732b33a3b171fccd Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Oct 2023 10:16:14 +1000
Subject: Make sure libs are searched in the develop/ dir by CMake
Static libs at least are not in the lib[/x86] dirs...
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf
index 24ed125..52f637e 100644
@@ -20,12 +19,12 @@ index 24ed125..52f637e 100644
CMAKE_DLL_DIR = $$CMAKE_LIB_DIR
CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE
--
2.37.3
2.42.0
From a6218c9ab6c754e730b33bbd386152e21c8085d7 Mon Sep 17 00:00:00 2001
From 2ebc27acb1c57a9cf4bde066c705b2b34b37a4fe Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 11 Feb 2019 15:56:12 +1000
Date: Fri, 20 Oct 2023 10:16:34 +1000
Subject: Fix QStandartPaths for Haiku
@@ -83,20 +82,20 @@ index 6122e5f..5bf676f 100644
case GenericConfigLocation:
paths += haikuStandardPath(B_SYSTEM_SETTINGS_DIRECTORY);
--
2.37.3
2.42.0
From 07e972341500246b05934bb9976a3e782dd23236 Mon Sep 17 00:00:00 2001
From a99d488cf0baab76629335f334be01504c5414ee Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 11 Feb 2019 15:56:39 +1000
Date: Fri, 20 Oct 2023 10:16:55 +1000
Subject: QSslSocketPrivate::unixRootCertDirectories(): add ssl path for Haiku.
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index 4eefe43..ea20a3e 100644
index 0563fd0..58835af 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -2953,6 +2953,7 @@ QList<QByteArray> QSslSocketPrivate::unixRootCertDirectories()
@@ -2958,6 +2958,7 @@ QList<QByteArray> QSslSocketPrivate::unixRootCertDirectories()
ba("/usr/local/ssl/certs/"), // Solaris
ba("/etc/openssl/certs/"), // BlackBerry
ba("/opt/openssl/certs/"), // HP-UX
@@ -105,17 +104,17 @@ index 4eefe43..ea20a3e 100644
};
return QList<QByteArray>::fromReadOnlyData(dirs);
--
2.37.3
2.42.0
From fc72eb07f336659fd206c667b867249e40a31481 Mon Sep 17 00:00:00 2001
From fcc3c9cc3337ca935f4548e2575b0ad04d67cab2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 11 Feb 2019 15:56:59 +1000
Date: Fri, 20 Oct 2023 10:45:27 +1000
Subject: Fix build for Haiku platform
diff --git a/mkspecs/features/toolchain.prf b/mkspecs/features/toolchain.prf
index 0040b6c..9a729bb 100644
index bfad10d..39e6d31 100644
--- a/mkspecs/features/toolchain.prf
+++ b/mkspecs/features/toolchain.prf
@@ -263,7 +263,7 @@ isEmpty($${target_prefix}.INCDIRS) {
@@ -128,12 +127,12 @@ index 0040b6c..9a729bb 100644
# or gold under Linux) will not print any library search path. Need to use another
# invocation with different options (which in turn doesn't print include search
--
2.37.3
2.42.0
From 7f1e826c4991c3a378018aaed49a5b14f9131699 Mon Sep 17 00:00:00 2001
From 73d27d2858bd63c8c77235e0c8e5ea3675340bea Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 11 Feb 2019 15:57:54 +1000
Date: Fri, 20 Oct 2023 10:45:56 +1000
Subject: Fix endian detection
@@ -155,40 +154,40 @@ index 9bb306e..9f0ea58 100644
# endif
# endif
--
2.37.3
2.42.0
From cd596caaa930b4cd5493e86443a4c2a9b5cd9a25 Mon Sep 17 00:00:00 2001
From 0fd1c0a17d2c3094e09152f0dae22354210f27bf Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 27 May 2020 19:54:30 +1000
Date: Fri, 20 Oct 2023 12:11:52 +1000
Subject: Disable LibResolv for Haiku
diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
index 12d8c04..377cb0b 100644
index 42194fb..59e2bee 100644
--- a/src/network/kernel/qhostinfo_unix.cpp
+++ b/src/network/kernel/qhostinfo_unix.cpp
@@ -55,7 +55,7 @@ typedef void (*res_nclose_proto)(res_state_ptr);
static res_nclose_proto local_res_nclose = nullptr;
static res_state_ptr local_res = nullptr;
@@ -47,6 +47,8 @@ static void maybeRefreshResolver()
// res_init() is not thread-safe; executing it leads to state corruption.
// Whether it reloads resolv.conf on its own is unknown.
return;
+#elif defined(Q_OS_HAIKU)
+ return;
#endif
-#if QT_CONFIG(library) && !defined(Q_OS_QNX)
+#if QT_CONFIG(library) && !defined(Q_OS_QNX) && !defined(Q_OS_HAIKU)
namespace {
struct LibResolv
{
#if QT_CONFIG(libresolv)
--
2.37.3
2.42.0
From 46c98fb360bcbd604a05d0107c0ffa79d28d94c9 Mon Sep 17 00:00:00 2001
From 06c1739c89f002727b58abbbe3c653e3d9326e4b Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 8 Sep 2019 00:17:19 +1000
Date: Fri, 20 Oct 2023 12:15:38 +1000
Subject: Don't use ifaddrs for Haiku
diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp
index 51a266b..cf16236 100644
index 082d83e..eab15bf 100644
--- a/src/network/kernel/qnetworkinterface_unix.cpp
+++ b/src/network/kernel/qnetworkinterface_unix.cpp
@@ -17,7 +17,7 @@
@@ -201,17 +200,17 @@ index 51a266b..cf16236 100644
#endif
--
2.37.3
2.42.0
From a4783b34d00955f5bea8d934b3c954f9574c3dab Mon Sep 17 00:00:00 2001
From fea0640efe1a4a170192c0b2ddec486eb7df0886 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 27 May 2020 19:54:58 +1000
Date: Fri, 20 Oct 2023 12:15:58 +1000
Subject: Disable sharedmemory feature for bootstrap
diff --git a/src/tools/bootstrap/CMakeLists.txt b/src/tools/bootstrap/CMakeLists.txt
index 0919159..4573649 100644
index e065fdf..915fb81 100644
--- a/src/tools/bootstrap/CMakeLists.txt
+++ b/src/tools/bootstrap/CMakeLists.txt
@@ -100,6 +100,7 @@ qt_internal_extend_target(Bootstrap
@@ -223,12 +222,12 @@ index 0919159..4573649 100644
..
../../3rdparty/tinycbor/src
--
2.37.3
2.42.0
From 148ba5e5b428c39bf41bd01eebd103b04fd5f692 Mon Sep 17 00:00:00 2001
From 39f3777388a2268cf91fda27c7d52974c80025e7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 29 Dec 2019 18:13:19 +1000
Date: Fri, 20 Oct 2023 12:16:20 +1000
Subject: Fix build for x86_gcc2
@@ -246,35 +245,20 @@ index 9960e45..3de4afc 100644
/* release the child */
#ifdef HAVE_EVENTFD
--
2.37.3
2.42.0
From ba91eb186d2e74775cfa3fbbfb41b8db397a71a3 Mon Sep 17 00:00:00 2001
From 41de48fd76bc2181ab729de9760b94d1eab66cd8 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 4 Jun 2020 23:11:17 +1000
Date: Fri, 20 Oct 2023 12:17:49 +1000
Subject: Implement QFilesystemWatcher for Haiku
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 1a8cc08..23845cc 100644
index d42b51d..7c3ce10 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -461,6 +461,14 @@ qt_internal_extend_target(Core CONDITION MSVC AND (TEST_architecture_arch STREQU
"/BASE:0x67000000"
)
+qt_internal_extend_target(Core CONDITION HAIKU
+ SOURCES
+ kernel/qsharedmemory_haiku.cpp
+ kernel/qsystemsemaphore_posix.cpp
+ kernel/qsystemsemaphore_systemv.cpp
+ kernel/qsystemsemaphore_unix.cpp
+)
+
# QtCore can't be compiled with -Wl,-no-undefined because it uses the
# "environ" variable and FreeBSD does not include a weak symbol for it
# in libc.
@@ -874,6 +882,11 @@ qt_internal_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher
@@ -900,6 +900,11 @@ qt_internal_extend_target(Core CONDITION MACOS AND QT_FEATURE_filesystemwatcher
io/qfilesystemwatcher_fsevents.mm io/qfilesystemwatcher_fsevents_p.h
)
@@ -286,15 +270,6 @@ index 1a8cc08..23845cc 100644
qt_internal_extend_target(Core CONDITION QT_FEATURE_filesystemwatcher AND QT_FEATURE_inotify AND UNIX AND NOT MACOS
SOURCES
io/qfilesystemwatcher_inotify.cpp io/qfilesystemwatcher_inotify_p.h
@@ -1068,7 +1081,7 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_clock_gettime AND UNIX
WrapRt::WrapRt
)
-qt_internal_extend_target(Core CONDITION UNIX AND NOT ANDROID
+qt_internal_extend_target(Core CONDITION UNIX AND NOT ANDROID AND NOT HAIKU
SOURCES
kernel/qsharedmemory_posix.cpp
kernel/qsharedmemory_systemv.cpp
diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp
index 9ffbe31..cfb1acf 100644
--- a/src/corelib/io/qfilesystemwatcher.cpp
@@ -668,20 +643,20 @@ index 0000000..0ae4bdf
+#endif // QFILESYSTEMWATCHER_HAIKU_P_H
+
--
2.37.3
2.42.0
From 98492a3f38ceab59d7c72e9bf6d47d1dba44ab13 Mon Sep 17 00:00:00 2001
From c336bbfc781e9ad9fedaaf68189700ce37c32ec6 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Tue, 16 Jun 2020 18:06:57 +1000
Date: Fri, 20 Oct 2023 12:18:17 +1000
Subject: Don't use AF_INET6 for new sockets
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index dd3c57d..e8228a9 100644
index d5f2bfb..681b136 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -200,8 +200,12 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc
@@ -204,8 +204,12 @@ bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType soc
}
int protocol = 0;
#endif // QT_NO_SCTP
@@ -695,17 +670,17 @@ index dd3c57d..e8228a9 100644
int socket = qt_safe_socket(domain, type, protocol, O_NONBLOCK);
--
2.37.3
2.42.0
From bb8f5a841d930ca07b6bac7f14f5ed7d029502e2 Mon Sep 17 00:00:00 2001
From 3fae787f5ac052fd2b423f495592fe38e015733c Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 5 Oct 2020 19:40:40 +1000
Date: Fri, 20 Oct 2023 12:18:41 +1000
Subject: Disable Haswell CPU feature for plugins
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
index 7478373..ed30375 100644
index 84f572a..f69b310 100644
--- a/src/corelib/plugin/qlibrary_unix.cpp
+++ b/src/corelib/plugin/qlibrary_unix.cpp
@@ -163,7 +163,7 @@ bool QLibraryPrivate::load_sys()
@@ -718,22 +693,39 @@ index 7478373..ed30375 100644
auto transform = [](QStringList &list, void (*f)(QString *)) {
QStringList tmp;
--
2.37.3
2.42.0
From 360d98f51a7d49451419490140cbe333d687d229 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 12 Nov 2020 17:50:04 +0100
From 7b014f8c23c4b5b14924a019e06d24de0906cf8e Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Oct 2023 12:19:25 +1000
Subject: Haiku build setup
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index 1dc576d..c79efa7 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -307,6 +307,12 @@ elseif(LINUX)
elseif(CLANG)
set(QT_DEFAULT_MKSPEC linux-clang)
endif()
+elseif(HAIKU)
+ if(GCC)
+ set(QT_DEFAULT_MKSPEC haiku-g++)
+ elseif(CLANG)
+ set(QT_DEFAULT_MKSPEC haiku-clang)
+ endif()
elseif(ANDROID)
if(GCC)
set(QT_DEFAULT_MKSPEC android-g++)
diff --git a/cmake/QtRpathHelpers.cmake b/cmake/QtRpathHelpers.cmake
index 2150b95..a88a0b4 100644
index 7228ffb..533d261 100644
--- a/cmake/QtRpathHelpers.cmake
+++ b/cmake/QtRpathHelpers.cmake
@@ -8,6 +8,8 @@ function(qt_internal_get_relative_rpath_base_token out_var)
set(rpath_rel_base "@loader_path")
elseif(LINUX OR SOLARIS OR FREEBSD OR HURD)
elseif(LINUX OR SOLARIS OR FREEBSD OR HURD OR OPENBSD)
set(rpath_rel_base "$ORIGIN")
+ elseif(HAIKU)
+ set(rpath_rel_base "$ORIGIN")
@@ -741,10 +733,10 @@ index 2150b95..a88a0b4 100644
set(rpath_rel_base "NO_KNOWN_RPATH_REL_BASE")
endif()
diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake
index 90acbae..63a7648 100644
index 762299f..60b614c 100644
--- a/cmake/QtSetup.cmake
+++ b/cmake/QtSetup.cmake
@@ -117,7 +117,7 @@ elseif(APPLE)
@@ -126,7 +126,7 @@ elseif(APPLE)
endif()
## Position independent code:
@@ -754,21 +746,21 @@ index 90acbae..63a7648 100644
# Does the linker support position independent code?
include(CheckPIESupported)
--
2.37.3
2.42.0
From 053c0c9f3668924bc35ded284a8aac06ce318953 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 12 Nov 2020 22:33:56 +0100
From 8b97a9c94ade718f3d1e63eaa41dc12129e0cfcf Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Oct 2023 12:21:18 +1000
Subject: Haiku: link against libnetwork
diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt
index ec6e5f1..23e4200 100644
index 64c9bf5..0affd20 100644
--- a/src/network/CMakeLists.txt
+++ b/src/network/CMakeLists.txt
@@ -215,6 +215,11 @@ qt_internal_extend_target(Network CONDITION QT_FEATURE_dnslookup AND WIN32
kernel/qdnslookup_win.cpp
@@ -202,6 +202,11 @@ qt_internal_extend_target(Network CONDITION WIN32
NOMINMAX
)
+qt_internal_extend_target(Network CONDITION HAIKU
@@ -780,276 +772,21 @@ index ec6e5f1..23e4200 100644
LIBRARIES
${FWCoreServices}
--
2.37.3
2.42.0
From d7d1cb4821067981b2f186af9a04667f0d031a99 Mon Sep 17 00:00:00 2001
From b8a9442cf57e65ece49f91399a76b5f8a6663e3f Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 31 Oct 2021 22:57:22 +1000
Subject: QSharedMemory implementation
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index 2449564..617c76c 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -10,6 +10,9 @@
#ifdef Q_OS_WIN
# include <qt_windows.h>
#endif
+#ifdef Q_OS_HAIKU
+# include <OS.h>
+#endif
#if defined(Q_OS_DARWIN)
# include "qcore_mac_p.h"
@@ -70,6 +73,12 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
#ifdef Q_OS_WIN
return result;
+#elif defined(Q_OS_HAIKU)
+ if (key.length() < B_OS_NAME_LENGTH)
+ return key;
+ result = key;
+ result.truncate(B_OS_NAME_LENGTH - 4);
+ return result + QLatin1Char('_') + QString::number(qChecksum(key.toUtf8()), 16);
#elif defined(QT_POSIX_IPC)
return u'/' + result;
#else
diff --git a/src/corelib/kernel/qsharedmemory_haiku.cpp b/src/corelib/kernel/qsharedmemory_haiku.cpp
new file mode 100644
index 0000000..88e18af
--- /dev/null
+++ b/src/corelib/kernel/qsharedmemory_haiku.cpp
@@ -0,0 +1,174 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2021 Gerasim Troeglazov,
+** Contact: 3dEyes@gmail.com
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#include "qsharedmemory.h"
+#include "qsharedmemory_p.h"
+#include <qdebug.h>
+
+#include <OS.h>
+
+#ifndef QT_NO_SHAREDMEMORY
+QT_BEGIN_NAMESPACE
+
+void QSharedMemoryPrivate::setErrorString(QLatin1String function)
+{
+ Q_UNUSED(function);
+}
+
+key_t QSharedMemoryPrivate::handle()
+{
+ const QString safeKey = makePlatformSafeKey(key);
+ if (safeKey.isEmpty()) {
+ errorString = QSharedMemory::tr("%1: key is empty").arg(QLatin1String("QSharedMemory::handle"));
+ error = QSharedMemory::KeyError;
+ return 0;
+ }
+
+ return 1;
+}
+
+#endif // QT_NO_SHAREDMEMORY
+
+#if !(defined(QT_NO_SHAREDMEMORY) && defined(QT_NO_SYSTEMSEMAPHORE))
+int QSharedMemoryPrivate::createUnixKeyFile(const QString &fileName)
+{
+ Q_UNUSED(fileName);
+ return 0;
+}
+#endif // QT_NO_SHAREDMEMORY && QT_NO_SYSTEMSEMAPHORE
+
+#ifndef QT_NO_SHAREDMEMORY
+
+bool QSharedMemoryPrivate::cleanHandle()
+{
+ if (hand > 0)
+ delete_area(hand);
+
+ hand = -1;
+
+ return true;
+}
+
+bool QSharedMemoryPrivate::create(qsizetype size)
+{
+ if (!handle())
+ return false;
+
+ const QLatin1String function("QSharedMemory::create");
+
+ const QString areaName = makePlatformSafeKey(key);
+
+ if (find_area(areaName.toUtf8().constData()) > 0) {
+ errorString = QSharedMemory::tr("%1: already exists").arg(function);
+ error = QSharedMemory::AlreadyExists;
+ return false;
+ }
+
+ hand = create_area(areaName.toUtf8().constData(), &memory, B_ANY_ADDRESS, size,
+ B_NO_LOCK, B_READ_AREA | B_WRITE_AREA | B_CLONEABLE_AREA);
+
+ if (hand <= B_ERROR) {
+ switch (hand) {
+ case B_NO_MEMORY:
+ errorString = QSharedMemory::tr("%1: not enough memory").arg(function);
+ error = QSharedMemory::OutOfResources;
+ break;
+ case B_BAD_VALUE:
+ errorString = QSharedMemory::tr("%1: bad area name").arg(function);
+ error = QSharedMemory::KeyError;
+ break;
+ default:
+ errorString = QSharedMemory::tr("%1: unknown error").arg(function);
+ error = QSharedMemory::UnknownError;
+ break;
+ }
+ return false;
+ }
+
+ return true;
+}
+
+bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode)
+{
+ const QLatin1String function("QSharedMemory::attach");
+
+ const QString areaName = makePlatformSafeKey(key);
+
+ uint32 permissions = mode == QSharedMemory::ReadOnly ? B_READ_AREA : B_READ_AREA | B_WRITE_AREA;
+
+ if (hand <= B_ERROR) {
+ area_id baseArea = find_area(areaName.toUtf8().constData());
+ if (baseArea <= B_ERROR) {
+ error = QSharedMemory::NotFound;
+ errorString = QSharedMemory::tr("%1: doesn't exist").arg(function);
+ cleanHandle();
+ return false;
+ }
+
+ hand = clone_area(areaName.toUtf8().constData(), &memory, B_ANY_ADDRESS, permissions, baseArea);
+ if (hand <= B_ERROR) {
+ error = QSharedMemory::UnknownError;
+ errorString = QSharedMemory::tr("%1: clone_area failed").arg(function);
+ cleanHandle();
+ return false;
+ }
+ }
+
+ area_info info;
+ if (get_area_info(hand, &info) != B_OK) {
+ error = QSharedMemory::UnknownError;
+ errorString = QSharedMemory::tr("%1: size query failed").arg(function);
+ cleanHandle();
+ return false;
+ }
+
+ size = info.size;
+ memory = info.address;
+
+ return true;
+}
+
+bool QSharedMemoryPrivate::detach()
+{
+ const QLatin1String function("QSharedMemory::detach");
+
+ area_id id = area_for(memory);
+
+ if (id == B_ERROR) {
+ error = QSharedMemory::NotFound;
+ errorString = QSharedMemory::tr("%1: doesn't exist").arg(function);
+ return false;
+ }
+
+ if (delete_area(id) != B_OK) {
+ error = QSharedMemory::UnknownError;
+ errorString = QSharedMemory::tr("%1: delete_area failed").arg(function);
+ return false;
+ }
+
+ memory = 0;
+ size = 0;
+
+ return cleanHandle();
+}
+
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_SHAREDMEMORY
diff --git a/src/corelib/kernel/qsharedmemory_p.h b/src/corelib/kernel/qsharedmemory_p.h
index 6d7973f..93512f4 100644
--- a/src/corelib/kernel/qsharedmemory_p.h
+++ b/src/corelib/kernel/qsharedmemory_p.h
@@ -39,10 +39,14 @@ QT_END_NAMESPACE
#include "qsystemsemaphore.h"
#include "private/qobject_p.h"
-#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_RTEMS)
+#if !defined(Q_OS_WIN) && !defined(Q_OS_ANDROID) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_RTEMS) && !defined(Q_OS_HAIKU)
# include <sys/sem.h>
#endif
+#if defined(Q_OS_HAIKU)
+# include <OS.h>
+#endif
+
QT_BEGIN_NAMESPACE
#if QT_CONFIG(systemsemaphore)
@@ -98,6 +102,8 @@ public:
const QString &prefix = QStringLiteral("qipc_sharedmemory_"));
#ifdef Q_OS_WIN
Qt::HANDLE handle();
+#elif defined(Q_OS_HAIKU)
+ area_id handle();
#elif defined(QT_POSIX_IPC)
int handle();
#else
@@ -125,6 +131,8 @@ public:
private:
#ifdef Q_OS_WIN
Qt::HANDLE hand = nullptr;
+#elif defined(Q_OS_HAIKU)
+ area_id hand = -1;
#elif defined(QT_POSIX_IPC)
int hand = -1;
#else
--
2.37.3
From 47e707b0c66e14d2b53c8562e2cd2f1e16ac3525 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Thu, 28 Apr 2022 21:03:05 +1000
Date: Fri, 20 Oct 2023 12:28:46 +1000
Subject: Fix elf parser for Haiku
diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp
index 54e5a19..f5cea82 100644
index ffc4a14..7d822e8 100644
--- a/src/corelib/plugin/qelfparser_p.cpp
+++ b/src/corelib/plugin/qelfparser_p.cpp
@@ -25,6 +25,12 @@
# define ELFOSABI_GNU ELFOSABI_LINUX
@@ -20,6 +20,12 @@
# error "Need ELF header to parse plugins."
#endif
+#ifdef __HAIKU__
@@ -1061,7 +798,7 @@ index 54e5a19..f5cea82 100644
QT_BEGIN_NAMESPACE
using namespace Qt::StringLiterals;
@@ -207,18 +213,26 @@ struct ElfHeaderCheck : public ElfHeaderCommonCheck
@@ -202,18 +208,26 @@ struct ElfHeaderCheck : public ElfHeaderCommonCheck
// byte 7
static bool checkOsAbi(const uchar *ident)
{
@@ -1088,7 +825,7 @@ index 54e5a19..f5cea82 100644
return true;
}
@@ -336,6 +350,9 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade
@@ -331,6 +345,9 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade
break;
}
@@ -1098,7 +835,7 @@ index 54e5a19..f5cea82 100644
switch (e_ident[EI_OSABI]) {
case ELFOSABI_SYSV: d << " (SYSV"; break;
case ELFOSABI_HPUX: d << " (HP-UX"; break;
@@ -352,7 +369,7 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade
@@ -347,7 +364,7 @@ Q_DECL_UNUSED Q_DECL_COLD_FUNCTION static QDebug &operator<<(QDebug &d, ElfHeade
if (e_ident[EI_ABIVERSION])
d << " v" << e_ident[EI_ABIVERSION];
d << ')';
@@ -1107,7 +844,7 @@ index 54e5a19..f5cea82 100644
if (e_ident[EI_VERSION] != 1) {
d << ", file version " << e_ident[EI_VERSION];
return d;
@@ -445,11 +462,12 @@ Q_DECL_UNUSED static QDebug &operator<<(QDebug &d, ElfSectionDebug s)
@@ -442,11 +459,12 @@ Q_DECL_UNUSED static QDebug &operator<<(QDebug &d, ElfSectionDebug s)
d << 'A';
if (s.shdr->sh_flags & SHF_EXECINSTR)
d << 'X';
@@ -1122,20 +859,20 @@ index 54e5a19..f5cea82 100644
return d;
}
--
2.37.3
2.42.0
From 1787baf0209b776f0021e97f859cad9d3fdd8c04 Mon Sep 17 00:00:00 2001
From 362b34a4d593a3cdfd6f88dbaf4ab858069072f2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 7 Apr 2023 19:34:19 +1000
Date: Fri, 20 Oct 2023 12:29:03 +1000
Subject: Don't use nl_langinfo
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 3feb4cf..5d069b6 100644
index cf773a2..99bce80 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -615,7 +615,7 @@ void QCoreApplicationPrivate::initLocale()
@@ -616,7 +616,7 @@ void QCoreApplicationPrivate::initLocale()
// QLocal8Bit hard-codes this, and we need to be consistent.
# if defined(Q_OS_INTEGRITY)
setlocale(LC_CTYPE, "UTF-8");
@@ -1145,5 +882,30 @@ index 3feb4cf..5d069b6 100644
// FIXME: Shouldn't we still setlocale("UTF-8")?
# elif defined(Q_OS_ANDROID) && __ANDROID_API__ < __ANDROID_API_O__
--
2.37.3
2.42.0
From fae5ec2bb295e4355129e1336a5bc0371b873f01 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Oct 2023 12:30:12 +1000
Subject: Workaround for shm_open
diff --git a/src/corelib/ipc/qsharedmemory_posix.cpp b/src/corelib/ipc/qsharedmemory_posix.cpp
index 8844810..a2e4cb7 100644
--- a/src/corelib/ipc/qsharedmemory_posix.cpp
+++ b/src/corelib/ipc/qsharedmemory_posix.cpp
@@ -68,6 +68,10 @@ bool QSharedMemoryPosix::create(QSharedMemoryPrivate *self, qsizetype size)
int fd;
EINTR_LOOP(fd, ::shm_open(shmName.constData(), O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, 0600));
+#ifdef Q_OS_HAIKU
+ if (fd == -1)
+ EINTR_LOOP(fd, ::shm_open(shmName.constData(), O_RDWR | O_CLOEXEC, 0600));
+#endif
if (fd == -1) {
const int errorNumber = errno;
const auto function = "QSharedMemory::attach (shm_open)"_L1;
--
2.42.0

View File

@@ -10,11 +10,11 @@ LICENSE="GNU LGPL v3
GNU FDL v1"
REVISION="1"
SOURCE_URI="https://download.qt.io/official_releases/qt/${portVersion%.*}/$portVersion/submodules/qtbase-everywhere-src-$portVersion.tar.xz"
CHECKSUM_SHA256="fde1aa7b4fbe64ec1b4fc576a57f4688ad1453d2fab59cbadd948a10a6eaf5ef"
CHECKSUM_SHA256="039d53312acb5897a9054bd38c9ccbdab72500b71fdccdb3f4f0844b0dd39e0e"
SOURCE_DIR="qtbase-everywhere-src-$portVersion"
srcGitRev2="eca3ef635963a25fcca763a40b7eb96940efd28c"
srcGitRev2="1882f012bab043bb1a789f493a074b02f0c3d5ea"
SOURCE_URI_2="https://github.com/threedeyes/qt6-haikuplugins/archive/$srcGitRev2.tar.gz"
CHECKSUM_SHA256_2="a6cb695f36a17b6e974027449025f0b454d13b16431afe30611d460c6b288a07"
CHECKSUM_SHA256_2="030ae321f28f6a12f51254a92d100d956058fed474d7e7c32fa9d45468fdc001"
SOURCE_DIR_2="qt6-haikuplugins-$srcGitRev2"
PATCHES="qt6_base-$portVersion.patchset"
@@ -48,9 +48,9 @@ REQUIRES="
lib:libfontconfig$secondaryArchSuffix
lib:libgl$secondaryArchSuffix
lib:libharfbuzz$secondaryArchSuffix
lib:libicudata$secondaryArchSuffix >= 66
lib:libicui18n$secondaryArchSuffix >= 66
lib:libicuuc$secondaryArchSuffix >= 66
lib:libicudata$secondaryArchSuffix
lib:libicui18n$secondaryArchSuffix
lib:libicuuc$secondaryArchSuffix
lib:libintl$secondaryArchSuffix
lib:libpcre2_16$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
@@ -69,6 +69,7 @@ PROVIDES_devel="
devel:libQt6DeviceDiscoverySupport$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6EdidSupport$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6EglFSDeviceIntegration$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6ExampleIcons$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6FBSupport$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6Gui$secondaryArchSuffix = $portVersion compat >= 6
devel:libQt6Network$secondaryArchSuffix = $portVersion compat >= 6
@@ -86,6 +87,8 @@ REQUIRES_devel="
haiku${secondaryArchSuffix}_devel
qt6_base$secondaryArchSuffix == $portVersion base
devel:libgl$secondaryArchSuffix
devel:libharfbuzz$secondaryArchSuffix
devel:libharfbuzz_gobject$secondaryArchSuffix
devel:libvulkan$secondaryArchSuffix
"
@@ -100,6 +103,7 @@ BUILD_REQUIRES="
devel:libgl$secondaryArchSuffix
devel:libglu$secondaryArchSuffix
devel:libharfbuzz$secondaryArchSuffix
devel:libharfbuzz_gobject$secondaryArchSuffix
devel:libicuuc$secondaryArchSuffix >= 66
devel:libjpeg$secondaryArchSuffix
devel:libpcre2_16$secondaryArchSuffix
@@ -157,7 +161,7 @@ BUILD()
-DQT_FEATURE_glib=OFF \
-DFEATURE_rpath=OFF
ninja -C build $jobArgs
ninja -v -C build $jobArgs
}
INSTALL()
@@ -186,6 +190,7 @@ INSTALL()
libQt6DeviceDiscoverySupport \
libQt6EglFSDeviceIntegration \
libQt6FbSupport \
libQt6ExampleIcons \
libQt6Gui \
libQt6Network \
libQt6OpenGL \