summaryrefslogtreecommitdiff
path: root/user/qt5-qtwebkit
diff options
context:
space:
mode:
Diffstat (limited to 'user/qt5-qtwebkit')
-rw-r--r--user/qt5-qtwebkit/0001-Add-ARM-64-support.patch13
-rw-r--r--user/qt5-qtwebkit/APKBUILD141
-rw-r--r--user/qt5-qtwebkit/armv6.patch72
-rw-r--r--user/qt5-qtwebkit/fix-execinfo.patch20
-rw-r--r--user/qt5-qtwebkit/fix-rpath.patch11
-rw-r--r--user/qt5-qtwebkit/glib-compat.patch37
-rw-r--r--user/qt5-qtwebkit/icu-68.patch124
-rw-r--r--user/qt5-qtwebkit/icu-75.patch55
-rw-r--r--user/qt5-qtwebkit/jsc-musl.patch32
-rw-r--r--user/qt5-qtwebkit/missing-header.patch11
-rw-r--r--user/qt5-qtwebkit/pic.patch11
-rw-r--r--user/qt5-qtwebkit/ppc-llint.patch32
-rw-r--r--user/qt5-qtwebkit/ppc-ucontext.patch15
-rw-r--r--user/qt5-qtwebkit/ppc64-llint.patch28
-rw-r--r--user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch46
15 files changed, 538 insertions, 110 deletions
diff --git a/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch b/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch
deleted file mode 100644
index 73f5c97f8..000000000
--- a/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
-index 4594ec8..639f28f 100644
---- a/Source/WTF/wtf/Platform.h
-+++ b/Source/WTF/wtf/Platform.h
-@@ -342,7 +342,7 @@
- #endif
- #endif
-
--#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64)
-+#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64) || CPU(AARCH64)
- #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
- #endif
-
diff --git a/user/qt5-qtwebkit/APKBUILD b/user/qt5-qtwebkit/APKBUILD
index 36b624e8a..71f3238aa 100644
--- a/user/qt5-qtwebkit/APKBUILD
+++ b/user/qt5-qtwebkit/APKBUILD
@@ -1,72 +1,103 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtwebkit
-_pkgname=qtwebkit-opensource-src
-pkgver=5.9.1
+_realname=qtwebkit
+pkgver=5.212.0_git20200924
+_ts=1600955993
pkgrel=4
-pkgdesc="Qt 5 - WebKit components"
-url="https://www.qt.io/"
+pkgdesc="Open source Web browser engine"
+url="https://github.com/qtwebkit/qtwebkit/wiki"
arch="all"
-options="!check"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
-depends=""
-depends_dev="qt5-qtdeclarative-dev gstreamer-dev gst-plugins-base-dev
- libxslt-dev mesa-dev icu-dev libxext-dev glib-dev libxcomposite-dev
- libxrender-dev
- "
-makedepends="$depends_dev bison flex fontconfig-dev gperf libjpeg-turbo-dev
- libpng-dev libwebp-dev pcre-dev qt5-qtbase-dev ruby sqlite-dev zlib-dev"
+options="!check" # Tests fail (surprise), require X11.
+license="LGPL-2.1+ AND BSD-3-Clause AND Others"
+depends="gst-plugins-base"
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev ninja sqlite-dev icu-dev ruby perl bison flex gperf
+ libxml2-dev libxslt-dev libjpeg-turbo-dev libpng-dev zlib-dev glib-dev
+ gstreamer-dev fontconfig-dev qt5-qtsensors-dev qt5-qtpositioning-dev
+ qt5-qtdeclarative-dev qt5-qtwebchannel-dev libxcomposite-dev cmake
+ libxrender-dev gst-plugins-base-dev hyphen-dev libexecinfo-dev
+ ruby-dev glib-dev libgcrypt-dev libtasn1-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
- pic.patch
- fix-rpath.patch
- fix-execinfo.patch
- 0001-Add-ARM-64-support.patch
+#source="https://github.com/qtwebkit/qtwebkit/releases/download/$_realname-$_realver/$_realname-$_realver.tar.xz
+source="https://download.qt.io/snapshots/ci/qtwebkit/${pkgver%.*}/$_ts/src/submodules/$_realname-opensource-src-${pkgver%.*}.tar.xz
+ armv6.patch
+ glib-compat.patch
+ icu-68.patch
+ icu-75.patch
+ jsc-musl.patch
+ missing-header.patch
+ ppc-llint.patch
+ ppc-ucontext.patch
+ ppc64-llint.patch
+ webkit-offlineasm-warnings-ruby27.patch
"
-builddir="$srcdir"/$_pkgname-$pkgver
-
-prepare() {
- default_prepare
- # remove some bundled
- mkdir Source/ThirdParty/orig
- mv Source/ThirdParty/gtest/ \
- Source/ThirdParty/qunit/ \
- Source/ThirdParty/orig/
- syncqt.pl -version $pkgver Source/sync.profile
-}
+builddir="$srcdir"/$_realname-opensource-src-${pkgver%.*}
build() {
- local _maybe_smaller=""
- cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ export CXXFLAGS="$CXXFLAGS -Wno-deprecated-copy -Wno-deprecated-declarations"
- # On 32-bit x86, ld.bfd will run out of memory if debugging information
- # is built. See https://sourceware.org/bugzilla/show_bug.cgi?id=23470
- # for more information.
- case "$CARCH" in
- pmmx) _maybe_smaller="QMAKE_CXXFLAGS_DEBUG+=-g0"
+ case "${CARCH}" in
+ armv7|pmmx|ppc)
+ # 32-bit memory ceiling (#922)
+ BUILD_TYPE="MinSizeRel";
+ LDFLAGS="${LDFLAGS} -Wl,--strip-debug";
+ ;;
+ *)
+ BUILD_TYPE="RelWithDebugInfo";
+ ;;
esac
- qmake $_maybe_smaller
-
- # /usr/include/fortify/stdlib.h:20:25: fatal error: stdlib.h: No such file or directory
- # see: http://stackoverflow.com/questions/37218953/isystem-on-a-system-include-directory-causes-errors
- # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71090
- # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
- qmake Source/JavaScriptCore/LLIntOffsetsExtractor.pro -o \
- Source/JavaScriptCore/Makefile.LLIntOffsetsExtractor
- sed -i 's:-isystem /usr/include ::' \
- Source/JavaScriptCore/Makefile.LLIntOffsetsExtractor
-
+ # We can enable the JIT when it is stable on all Tier 1 platforms:
+ # pmmx (ensure no SSE)
+ # ppc
+ # ppc64
+ #
+ # DONE:
+ # aarch64
+ # armv7
+ # x86_64
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DENABLE_JIT=OFF \
+ -DENABLE_PRINT_SUPPORT=ON \
+ -DENABLE_QT_WEBCHANNEL=ON \
+ -DENABLE_SAMPLING_PROFILER=OFF \
+ -DPORT=Qt \
+ -DUSE_SYSTEM_MALLOC=ON \
+ -DUSE_WOFF2=OFF \
+ -DENABLE_MEDIA_SOURCE=ON \
+ -DENABLE_VIDEO=ON \
+ -DENABLE_WEB_AUDIO=ON \
+ -DUSE_GSTREAMER=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
package() {
- cd "$builddir"
- make install INSTALL_ROOT="$pkgdir"
- sed -i -e 's:-L/home[^ ]\+::g' "$pkgdir"/usr/lib/pkgconfig/*.pc
+ make DESTDIR="$pkgdir" install
}
-sha512sums="79316ab746a230fdb290e28629d7cec5fca75119ba8868060742c682ab86490de9ffd8e517569aa7412f35fd709568dbb5f7d2d467bdb4461e192f8b05d6f1e5 qtwebkit-opensource-src-5.9.1.tar.xz
-9a62a5e7af91c44311b517608262f88b5bc607e75dc5878dd08b0a0872ec03fb7a566df0a41413f7e60beb1b9880e24f084b90c38ed50d4219ec2ad6af9bd62f pic.patch
-00d59c0cdb58ae8e7cf6bc3d03f133697e74c267ccebe12238bcdc274d4c90210b82c2d8bdf0e949cd43da13a4fd8a4c35fb54a00ed5102a4ac4d23aa002d0fe fix-rpath.patch
-f17c2f4b90090c8f12e4ba1f2cbd7a9f496c8de024ba6e0d55b98e5b89ab89298aff84f39e81905e0491fe6bd11544633a8b191403a866e16ed654d44cf8dc6f fix-execinfo.patch
-af5097d44f73de156ca31a5423136301dfc12ae693e20c4702bf3f1c6e16395f3912e9268582480ba3177021f37d4cae3b84d4b23eeb063fdc40f2444d3b34c8 0001-Add-ARM-64-support.patch"
+sha512sums="e2983ac291654ac75a8cdaaa1ca16810ae047e8d78c8910c415ab76e6efa532b75b119be8f053f00214ee5526099a75930becfbd23e8f7a4c08be32e5f41a1d7 qtwebkit-opensource-src-5.212.tar.xz
+ca77802de1b945c05b6a88d5cc0cbb093a751ef16626d221c8b2ca5cf841f5d42fffe62087df1ce0964f8ce72148c0109ff85e5cef3390125c133b310031028e armv6.patch
+9f42f3d64657fb9487d9299ad5931381f9aa91a746a5986dc361def5e9a6e02933054a66132fa99057460ad6de0c19e9b51e07594451cc4f38b19012a69d205c glib-compat.patch
+5f0ca182c68c55a6f221e96bf2221784c7126006ea8db3e9eee2b66dbdda18d7d0f9830e8345ac2b0bc6f557af5d2a54a321b06be4a2c845dd1003282b053443 icu-68.patch
+240ec1d145eee861c45da753b5f4b01a7aadeee4de604a701de9d326ab02a3565bd63398c98d820d7eae498d28cf8eb0b53615f634c3791915cae35bbd3e263a icu-75.patch
+9e3638d4d5c6e56510525931b278c8d6e28134917c300837b4eccf1b9298af1e274668318af82091137e99b83da0f78904084b7ee9dd8422b347a0f35e765c31 jsc-musl.patch
+ee3d06d3c350980a2a042961b6943d42706599b39270addce3904535811b18a2af8f74842f2d21267ce71250b97c05de600ec416e042f4d1cdbc2701711b5f4a missing-header.patch
+4a3a15f8b1e63cade07c589be45afd794b45b34ee98e4d2d3fc2f52662c26c518d400b44c9314e41113cad847b9efd544d2a4c02425c9892ca9729e218ae9306 ppc-llint.patch
+48f81c6a2c0f4e9b215dada4c0bebdafc66feb75178a7b1ca661f2bbcddd6b573e7db4dd179f6e4b6345c7ebcf17ce1c6647cc6ce39dbac8ba68f8863a98bdc0 ppc-ucontext.patch
+db98d710815eb68f1fb025098b04c34b33518750c193e702383ca879e145c52ba4786fa4721f384f01f90231c32be9478d507c1000eb761621751edcd071b966 ppc64-llint.patch
+1431c6329fb9ef86dbe929a4002881f6a511aa8a2be684a7c96ea7ea48af53b4f0d96bd8e8367289080bed674ba35cab002747cf3820a6831e60f7ab7a53d3cc webkit-offlineasm-warnings-ruby27.patch"
diff --git a/user/qt5-qtwebkit/armv6.patch b/user/qt5-qtwebkit/armv6.patch
new file mode 100644
index 000000000..d2911d6d7
--- /dev/null
+++ b/user/qt5-qtwebkit/armv6.patch
@@ -0,0 +1,72 @@
+From 7cc86ebe881f36bfef18d8eeee666d2a55eae892 Mon Sep 17 00:00:00 2001
+From: Guilherme Iscaro <iscaro@profusion.mobi>
+Date: Fri, 31 Mar 2017 10:31:49 -0300
+Subject: [PATCH] Fix build on ARMv6.
+
+The ARMv6 and older architures does not support the movw and movl
+instructions, thus causing a build break.
+This patch fix the problem by creating a new offlineasm instruction,
+which will use the ldr instruction to load a immediate into a register.
+
+https://bugs.webkit.org/show_bug.cgi?id=141288
+
+Reviewed by NOBODY (OOPS!).
+
+* llint/LowLevelInterpreter.asm:
+* offlineasm/arm.rb:
+* offlineasm/instructions.rb:
+---
+ Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 8 +++++++-
+ Source/JavaScriptCore/offlineasm/arm.rb | 2 ++
+ Source/JavaScriptCore/offlineasm/instructions.rb | 3 ++-
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git Source/JavaScriptCore/llint/LowLevelInterpreter.asm Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+index ab3c0c8e771..6c32eef8852 100644
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+@@ -1167,7 +1167,13 @@ macro setEntryAddress(index, label)
+ move index, t4
+ storep t1, [a0, t4, 8]
+ elsif ARM or ARMv7 or ARMv7_TRADITIONAL
+- mvlbl (label - _relativePCBase), t4
++ if ARM
++ ldrlbl t4, label
++ ldrlbl t3, _relativePCBase
++ subp t4, t3, t4
++ else
++ mvlbl (label - _relativePCBase), t4
++ end
+ addp t4, t1, t4
+ move index, t3
+ storep t4, [a0, t3, 4]
+diff --git Source/JavaScriptCore/offlineasm/arm.rb Source/JavaScriptCore/offlineasm/arm.rb
+index c8064a59196..a9c40c8995c 100644
+--- a/Source/JavaScriptCore/offlineasm/arm.rb
++++ b/Source/JavaScriptCore/offlineasm/arm.rb
+@@ -504,6 +504,8 @@ class Instruction
+ when "mvlbl"
+ $asm.puts "movw #{operands[1].armOperand}, \#:lower16:#{operands[0].value}"
+ $asm.puts "movt #{operands[1].armOperand}, \#:upper16:#{operands[0].value}"
++ when "ldrlbl"
++ $asm.puts "ldr #{operands[0].armOperand}, =#{operands[1].value}"
+ when "nop"
+ $asm.puts "nop"
+ when "bieq", "bpeq", "bbeq"
+diff --git Source/JavaScriptCore/offlineasm/instructions.rb Source/JavaScriptCore/offlineasm/instructions.rb
+index bbfce7193b3..8cc1cb961ce 100644
+--- a/Source/JavaScriptCore/offlineasm/instructions.rb
++++ b/Source/JavaScriptCore/offlineasm/instructions.rb
+@@ -261,7 +261,8 @@ X86_INSTRUCTIONS =
+ ARM_INSTRUCTIONS =
+ [
+ "clrbp",
+- "mvlbl"
++ "mvlbl",
++ "ldrlbl"
+ ]
+
+ ARM64_INSTRUCTIONS =
+--
+2.12.1
+
diff --git a/user/qt5-qtwebkit/fix-execinfo.patch b/user/qt5-qtwebkit/fix-execinfo.patch
deleted file mode 100644
index 6fbf4ed8f..000000000
--- a/user/qt5-qtwebkit/fix-execinfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- webkitgtk-2.2.0.orig/Source/WTF/wtf/Assertions.cpp
-+++ webkitgtk-2.2.0/Source/WTF/wtf/Assertions.cpp
-@@ -64,7 +64,7 @@
- #include <windows.h>
- #endif
-
--#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) && !OS(ANDROID)
- #include <cxxabi.h>
- #include <dlfcn.h>
- #include <execinfo.h>
-@@ -242,7 +242,7 @@
-
- void WTFGetBacktrace(void** stack, int* size)
- {
--#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) && !OS(ANDROID)
- *size = backtrace(stack, *size);
- #elif OS(WINDOWS) && !OS(WINCE)
- // The CaptureStackBackTrace function is available in XP, but it is not defined
diff --git a/user/qt5-qtwebkit/fix-rpath.patch b/user/qt5-qtwebkit/fix-rpath.patch
deleted file mode 100644
index 6b08fd1a3..000000000
--- a/user/qt5-qtwebkit/fix-rpath.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Tools/qmake/mkspecs/features/unix/default_post.prf.orig
-+++ ./Tools/qmake/mkspecs/features/unix/default_post.prf
-@@ -59,8 +59,6 @@
- }
- }
-
--contains(TEMPLATE, app): CONFIG += rpath
--
- CONFIG(debug, debug|release)|force_debug_info {
- # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
- !force_static_libs_as_shared:config_gnuld: QMAKE_LFLAGS += -Wl,--no-keep-memory
diff --git a/user/qt5-qtwebkit/glib-compat.patch b/user/qt5-qtwebkit/glib-compat.patch
new file mode 100644
index 000000000..0873e8d4f
--- /dev/null
+++ b/user/qt5-qtwebkit/glib-compat.patch
@@ -0,0 +1,37 @@
+From 5b698ba3faffd4e198a45be9fe74f53307395e4b Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fvogt@suse.de>
+Date: Wed, 7 Apr 2021 13:38:09 +0200
+Subject: [PATCH] Remove invalid g_object declarations to fix build with glib
+ >= 2.68
+
+g_object_ref_sink is defined as a macro meanwhile and so the build fails.
+Just remove the declarations, glib.h is included anyway.
+---
+ Source/WTF/wtf/glib/GRefPtr.h | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/Source/WTF/wtf/glib/GRefPtr.h b/Source/WTF/wtf/glib/GRefPtr.h
+index 06133d82cb35..d9a1d2f145f5 100644
+--- a/Source/WTF/wtf/glib/GRefPtr.h
++++ b/Source/WTF/wtf/glib/GRefPtr.h
+@@ -29,9 +29,6 @@
+ #include <algorithm>
+ #include <glib.h>
+
+-extern "C" void g_object_unref(gpointer);
+-extern "C" gpointer g_object_ref_sink(gpointer);
+-
+ namespace WTF {
+
+ enum GRefPtrAdoptType { GRefPtrAdopt };
+--- qtwebkit-opensource-src-5.212/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp 2022-06-12 02:35:30.360000000 -0500
+@@ -230,7 +230,7 @@
+ [](GstAppSink* sink, gpointer userData) -> GstFlowReturn {
+ return static_cast<AudioFileReader*>(userData)->handleSample(sink);
+ },
+- { nullptr }
++ nullptr
+ };
+ gst_app_sink_set_callbacks(GST_APP_SINK(sink), &callbacks, this, 0);
+
diff --git a/user/qt5-qtwebkit/icu-68.patch b/user/qt5-qtwebkit/icu-68.patch
new file mode 100644
index 000000000..70ee2a06d
--- /dev/null
+++ b/user/qt5-qtwebkit/icu-68.patch
@@ -0,0 +1,124 @@
+ICU uses uncapital bools now.
+
+Commit: https://github.com/unicode-org/icu/commit/c3fe7e09d844
+
+--- a/Source/WebCore/platform/text/TextCodecICU.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/TextCodecICU.cpp
+@@ -308,7 +308,7 @@ void TextCodecICU::createICUConverter() const
+ m_converterICU = ucnv_open(m_canonicalConverterName, &err);
+ ASSERT(U_SUCCESS(err));
+ if (m_converterICU)
+- ucnv_setFallback(m_converterICU, TRUE);
++ ucnv_setFallback(m_converterICU, true);
+ }
+
+ int TextCodecICU::decodeToBuffer(UChar* target, UChar* targetLimit, const char*& source, const char* sourceLimit, int32_t* offsets, bool flush, UErrorCode& err)
+--- a/Source/WebCore/platform/text/icu/UTextProvider.h.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProvider.h
+@@ -80,12 +80,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text
+ // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
+ ASSERT(offset < std::numeric_limits<int32_t>::max());
+ text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
+- isAccessible = TRUE;
++ isAccessible = true;
+ return true;
+ }
+ if (nativeIndex >= nativeLength && text->chunkNativeLimit == nativeLength) {
+ text->chunkOffset = text->chunkLength;
+- isAccessible = FALSE;
++ isAccessible = false;
+ return true;
+ }
+ } else {
+@@ -94,12 +94,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text
+ // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
+ ASSERT(offset < std::numeric_limits<int32_t>::max());
+ text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
+- isAccessible = TRUE;
++ isAccessible = true;
+ return true;
+ }
+ if (nativeIndex <= 0 && !text->chunkNativeStart) {
+ text->chunkOffset = 0;
+- isAccessible = FALSE;
++ isAccessible = false;
+ return true;
+ }
+ }
+--- a/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp
+@@ -100,23 +100,23 @@ static UBool uTextLatin1Access(UText* uText, int64_t i
+ if (index < uText->chunkNativeLimit && index >= uText->chunkNativeStart) {
+ // Already inside the buffer. Set the new offset.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return TRUE;
++ return true;
+ }
+ if (index >= length && uText->chunkNativeLimit == length) {
+ // Off the end of the buffer, but we can't get it.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return FALSE;
++ return false;
+ }
+ } else {
+ if (index <= uText->chunkNativeLimit && index > uText->chunkNativeStart) {
+ // Already inside the buffer. Set the new offset.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return TRUE;
++ return true;
+ }
+ if (!index && !uText->chunkNativeStart) {
+ // Already at the beginning; can't go any farther.
+ uText->chunkOffset = 0;
+- return FALSE;
++ return false;
+ }
+ }
+
+@@ -144,7 +144,7 @@ static UBool uTextLatin1Access(UText* uText, int64_t i
+
+ uText->nativeIndexingLimit = uText->chunkLength;
+
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextLatin1Extract(UText* uText, int64_t start, int64_t limit, UChar* dest, int32_t destCapacity, UErrorCode* status)
+@@ -336,7 +336,7 @@ static int64_t uTextLatin1ContextAwareNativeLength(UTe
+ static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
+ {
+ if (!text->context)
+- return FALSE;
++ return false;
+ int64_t nativeLength = uTextLatin1ContextAwareNativeLength(text);
+ UBool isAccessible;
+ if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
+@@ -356,7 +356,7 @@ static UBool uTextLatin1ContextAwareAccess(UText* text
+ ASSERT(newContext == UTextProviderContext::PriorContext);
+ textLatin1ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
+ }
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextLatin1ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
+--- a/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp
+@@ -125,7 +125,7 @@ static inline int64_t uTextUTF16ContextAwareNativeLeng
+ static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
+ {
+ if (!text->context)
+- return FALSE;
++ return false;
+ int64_t nativeLength = uTextUTF16ContextAwareNativeLength(text);
+ UBool isAccessible;
+ if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
+@@ -145,7 +145,7 @@ static UBool uTextUTF16ContextAwareAccess(UText* text,
+ ASSERT(newContext == UTextProviderContext::PriorContext);
+ textUTF16ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
+ }
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextUTF16ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
diff --git a/user/qt5-qtwebkit/icu-75.patch b/user/qt5-qtwebkit/icu-75.patch
new file mode 100644
index 000000000..aaba87abd
--- /dev/null
+++ b/user/qt5-qtwebkit/icu-75.patch
@@ -0,0 +1,55 @@
+Required for compatibility with ICU 75.
+
+--- qtwebkit-opensource-src-5.212/Source/cmake/OptionsCommon.cmake.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/cmake/OptionsCommon.cmake 2024-08-12 23:20:50.344794822 -0500
+@@ -31,7 +31,7 @@
+ if (COMPILER_IS_GCC_OR_CLANG)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -fno-strict-aliasing")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-strict-aliasing -fno-rtti")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
+ endif ()
+
+ if (COMPILER_IS_CLANG AND CMAKE_GENERATOR STREQUAL "Ninja")
+--- qtwebkit-opensource-src-5.212/Source/WTF/wtf/StdLibExtras.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WTF/wtf/StdLibExtras.h 2024-08-12 23:38:15.214914980 -0500
+@@ -292,7 +292,7 @@
+ // This adds various C++14 features for versions of the STL that may not yet have them.
+ namespace std {
+ // MSVC 2013 supports std::make_unique already.
+-#if !defined(_MSC_VER) || _MSC_VER < 1800
++#if 0
+ template<class T> struct _Unique_if {
+ typedef unique_ptr<T> _Single_object;
+ };
+@@ -323,7 +323,7 @@
+ #endif
+
+ // MSVC 2015 supports these functions.
+-#if !COMPILER(MSVC) || _MSC_VER < 1900
++#if 0
+ // Compile-time integer sequences
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html
+ // (Note that we only implement index_sequence, and not the more generic integer_sequence).
+--- qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessor.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessor.h 2024-08-13 00:27:21.354699921 -0500
+@@ -64,7 +64,7 @@
+
+ void reset();
+
+- static void parseErrorFunc(void* userData, xmlError*);
++ static void parseErrorFunc(void* userData, const xmlError*);
+ static void genericErrorFunc(void* userData, const char* msg, ...);
+
+ // Only for libXSLT callbacks
+--- qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessorLibxslt.cpp.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessorLibxslt.cpp 2024-08-13 00:28:32.207221034 -0500
+@@ -78,7 +78,7 @@
+ // It would be nice to do something with this error message.
+ }
+
+-void XSLTProcessor::parseErrorFunc(void* userData, xmlError* error)
++void XSLTProcessor::parseErrorFunc(void* userData, const xmlError* error)
+ {
+ PageConsoleClient* console = static_cast<PageConsoleClient*>(userData);
+ if (!console)
diff --git a/user/qt5-qtwebkit/jsc-musl.patch b/user/qt5-qtwebkit/jsc-musl.patch
new file mode 100644
index 000000000..0165f21dc
--- /dev/null
+++ b/user/qt5-qtwebkit/jsc-musl.patch
@@ -0,0 +1,32 @@
+--- a/Source/JavaScriptCore/runtime/Options.h 2020-04-14 00:51:51.000000000 +0200
++++ b/Source/JavaScriptCore/runtime/Options.h 2020-04-14 00:51:51.000000000 +0200
+@@ -40,6 +40,16 @@
+
+ namespace JSC {
+
++#if defined(__GLIBC__)
++constexpr unsigned jscMaxPerThreadStack = 4 * MB;
++constexpr unsigned jscSoftReservedZoneSize = 128 * KB;
++constexpr unsigned jscReservedZoneSize = 64 * KB;
++#else
++constexpr unsigned jscMaxPerThreadStack = 80 * KB;
++constexpr unsigned jscSoftReservedZoneSize = 32 * KB;
++constexpr unsigned jscReservedZoneSize = 16 * KB;
++#endif
++
+ // How do JSC VM options work?
+ // ===========================
+ // The JSC_OPTIONS() macro below defines a list of all JSC options in use,
+@@ -112,9 +122,9 @@
+ \
+ v(bool, reportMustSucceedExecutableAllocations, false, nullptr) \
+ \
+- v(unsigned, maxPerThreadStackUsage, 4 * MB, nullptr) \
+- v(unsigned, reservedZoneSize, 128 * KB, nullptr) \
+- v(unsigned, errorModeReservedZoneSize, 64 * KB, nullptr) \
++ v(unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, nullptr) \
++ v(unsigned, reservedZoneSize, jscSoftReservedZoneSize, nullptr) \
++ v(unsigned, errorModeReservedZoneSize, jscReservedZoneSize, nullptr) \
+ \
+ v(bool, crashIfCantAllocateJITMemory, false, nullptr) \
+ v(unsigned, jitMemoryReservationSize, 0, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \
diff --git a/user/qt5-qtwebkit/missing-header.patch b/user/qt5-qtwebkit/missing-header.patch
new file mode 100644
index 000000000..da0eed43c
--- /dev/null
+++ b/user/qt5-qtwebkit/missing-header.patch
@@ -0,0 +1,11 @@
+The GCC 13 C++ stdlib doesn't include <stdint.h> any more, which is used for uint32_t.
+--- qtwebkit-opensource-src-5.212/Source/ThirdParty/ANGLE/src/common/mathutil.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/ThirdParty/ANGLE/src/common/mathutil.h 2024-05-27 14:43:22.625301664 -0500
+@@ -14,6 +14,7 @@
+
+ #include <limits>
+ #include <algorithm>
++#include <stdint.h>
+ #include <string.h>
+ #include <stdlib.h>
+
diff --git a/user/qt5-qtwebkit/pic.patch b/user/qt5-qtwebkit/pic.patch
deleted file mode 100644
index ef8993ee3..000000000
--- a/user/qt5-qtwebkit/pic.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Source/WTF/wtf/InlineASM.h.orig 2013-10-07 11:36:58.995128674 +0000
-+++ ./Source/WTF/wtf/InlineASM.h 2013-10-07 11:37:28.058792290 +0000
-@@ -42,7 +42,7 @@
- #define THUMB_FUNC_PARAM(name)
- #endif
-
--#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
-+#if (OS(LINUX) || OS(FREEBSD)) && (CPU(X86_64) || defined(__PIC__))
- #define GLOBAL_REFERENCE(name) #name "@plt"
- #elif CPU(X86) && COMPILER(MINGW)
- #define GLOBAL_REFERENCE(name) "@" #name "@4"
diff --git a/user/qt5-qtwebkit/ppc-llint.patch b/user/qt5-qtwebkit/ppc-llint.patch
new file mode 100644
index 000000000..7f9be4e56
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc-llint.patch
@@ -0,0 +1,32 @@
+This fixes JavaScriptCore on big endian systems (mainly ppc).
+
+Without the patch, attempting to run any JS results in
+a crash as the generated code was endian specific.
+
+--- qtwebkit/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
++++ qtwebkit/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
+@@ -1500,13 +1500,13 @@ _llint_op_put_by_id:
+ loadp StructureChain::m_vector[t3], t3
+ assert(macro (ok) btpnz t3, ok end)
+
+- loadp Structure::m_prototype[t2], t2
++ loadp Structure::m_prototype + PayloadOffset[t2], t2
+ btpz t2, .opPutByIdTransitionChainDone
+ .opPutByIdTransitionChainLoop:
+ loadp [t3], t1
+ bpneq t1, JSCell::m_structureID[t2], .opPutByIdSlow
+ addp 4, t3
+- loadp Structure::m_prototype[t1], t2
++ loadp Structure::m_prototype + PayloadOffset[t1], t2
+ btpnz t2, .opPutByIdTransitionChainLoop
+
+ .opPutByIdTransitionChainDone:
+@@ -1984,7 +1984,7 @@ _llint_throw_from_slow_path_trampoline:
+ # When throwing from the interpreter (i.e. throwing from LLIntSlowPaths), so
+ # the throw target is not necessarily interpreted code, we come to here.
+ # This essentially emulates the JIT's throwing protocol.
+- loadp Callee[cfr], t1
++ loadp Callee + PayloadOffset[cfr], t1
+ andp MarkedBlockMask, t1
+ loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t1], t1
+ copyCalleeSavesToVMCalleeSavesBuffer(t1, t2)
diff --git a/user/qt5-qtwebkit/ppc-ucontext.patch b/user/qt5-qtwebkit/ppc-ucontext.patch
new file mode 100644
index 000000000..e1b9bdfda
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc-ucontext.patch
@@ -0,0 +1,15 @@
+diff -ur a/Source/JavaScriptCore/heap/MachineStackMarker.cpp b/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+--- a/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2022-12-13 14:54:53.144583311 -0600
++++ b/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2022-12-13 14:55:16.829078581 -0600
+@@ -86,11 +86,7 @@
+ }
+
+ ucontext_t* userContext = static_cast<ucontext_t*>(ucontext);
+-#if CPU(PPC)
+- thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs;
+-#else
+ thread->suspendedMachineContext = userContext->uc_mcontext;
+-#endif
+
+ // Allow suspend caller to see that this thread is suspended.
+ // sem_post is async-signal-safe function. It means that we can call this from a signal handler.
diff --git a/user/qt5-qtwebkit/ppc64-llint.patch b/user/qt5-qtwebkit/ppc64-llint.patch
new file mode 100644
index 000000000..802c00ae6
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc64-llint.patch
@@ -0,0 +1,28 @@
+Description: fix JSCore segmentation fault on 64-bit big endian systems
+ In CodeBlock.cpp the code preparing the operands of op_get_from_scope writes
+ the property offset as pointer size (hence 64 bit) value:
+ .
+ 2141: instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
+ .
+ while the same slot is accessed later by the jitted code as 32 bit integer:
+ .
+ macro getProperty(slow)
+ loadisFromInstruction(6, t1)
+ .
+ This fails on big endian targets since the integer access takes the higher
+ part of the 64 bit value.
+Origin: backport, https://github.com/webkit/webkit/commit/3fdde71c7d95d758
+Reviewed-by: Frank Heimes <frank.heimes@canonical.com>
+Last-Update: 2021-11-24
+
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+@@ -2020,7 +2020,7 @@ macro loadWithStructureCheck(operand, sl
+ end
+
+ macro getProperty(slow)
+- loadisFromInstruction(6, t1)
++ loadpFromInstruction(6, t1)
+ loadPropertyAtVariableOffset(t1, t0, t2, slow)
+ valueProfile(t2, 7, t0)
+ loadisFromInstruction(1, t0)
diff --git a/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch b/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch
new file mode 100644
index 000000000..d25c3b1d6
--- /dev/null
+++ b/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch
@@ -0,0 +1,46 @@
+From c7d19a492d97f9282a546831beb918e03315f6ef Mon Sep 17 00:00:00 2001
+From: Adrian Perez de Castro <aperez@igalia.com>
+Date: Wed, 15 Jan 2020 22:15:38 +0000
+Subject: [PATCH] Offlineasm warnings with newer Ruby versions
+ https://bugs.webkit.org/show_bug.cgi?id=206233
+
+Reviewed by Yusuke Suzuki.
+
+Avoid a warning about using Object#=~ on Annotation instances, which
+has been deprecated in Ruby 2.7.
+
+* offlineasm/parser.rb: Swap checks to prevent applying the =~ operator
+to Annotation instances, which do not define it.
+
+
+Canonical link: https://commits.webkit.org/219400@main
+git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254637 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ Source/JavaScriptCore/ChangeLog | 13 +++++++++++++
+ Source/JavaScriptCore/offlineasm/parser.rb | 6 +++---
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/Source/JavaScriptCore/offlineasm/parser.rb b/Source/JavaScriptCore/offlineasm/parser.rb
+index 791c81a9868d..f14c873e2dbd 100644
+--- a/Source/JavaScriptCore/offlineasm/parser.rb
++++ b/Source/JavaScriptCore/offlineasm/parser.rb
+@@ -628,9 +628,7 @@ def parseSequence(final, comment)
+ firstCodeOrigin = @tokens[@idx].codeOrigin
+ list = []
+ loop {
+- if (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final)
+- break
+- elsif @tokens[@idx].is_a? Annotation
++ if @tokens[@idx].is_a? Annotation
+ # This is the only place where we can encounter a global
+ # annotation, and hence need to be able to distinguish between
+ # them.
+@@ -644,6 +642,8 @@ def parseSequence(final, comment)
+ list << Instruction.new(codeOrigin, annotationOpcode, [], @tokens[@idx].string)
+ @annotation = nil
+ @idx += 2 # Consume the newline as well.
++ elsif (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final)
++ break
+ elsif @tokens[@idx] == "\n"
+ # ignore
+ @idx += 1