From 40479e00d332f22f4d6000c1aef4cb35536ca8b7 Mon Sep 17 00:00:00 2001 From: Tim Biermann Date: Sat, 20 Jan 2024 11:40:24 +0100 Subject: [PATCH] qtwebengine: updated patch --- qtwebengine/.signature | 6 +- qtwebengine/Pkgfile | 7 +- ....patch => qtwebengine-build_fixes-2.patch} | 189 +++++++++++++++++- 3 files changed, 190 insertions(+), 12 deletions(-) rename qtwebengine/{qtwebengine-build_fixes-1.patch => qtwebengine-build_fixes-2.patch} (93%) diff --git a/qtwebengine/.signature b/qtwebengine/.signature index 253c9b5a2..60c0e4844 100644 --- a/qtwebengine/.signature +++ b/qtwebengine/.signature @@ -1,10 +1,10 @@ untrusted comment: verify with /etc/ports/opt.pub -RWSE3ohX2g5d/RyoNRdKuQielz+e8RW7cUXXbYAzj86DDwMrv6zIIV5j1m9alg2tEsE3auUCK4yqjxIMbCLG7Ki20udRAQ/PVQ0= -SHA256 (Pkgfile) = 1ee180e642f26fa9c8a8254af40fb5e13a8871800019cef274175a70025afe6b +RWSE3ohX2g5d/VnStbOCWe1pdwOA6nxdYjB5Jen1VZzxzbmJ2rTN9MA28eRd4fDiOf5aT75TadOmUGeyXk8MP2Xy3+PPKxSetw8= +SHA256 (Pkgfile) = 4d87060cf7cc8852d7066081a7782866c9c7a7746e23b5cdc3904ee874f2efa1 SHA256 (.footprint) = 9c07e0209b90e6d45f593e30c0b5342a594c32de974cc61990189f9e80f4a21a SHA256 (qtwebengine-5.15.17.tar.gz) = 2ad54fcc3e43f750c3accf3ac0909f47722b31d69e9fd80394c8d9d11b2d9ab5 SHA256 (qtwebengine-chromium-ce00f9b5aa761866b24d6460e10aacb671c92cf0.tar.gz) = 7ccc1b485bc57c54a1dac4663cf90aaeb5fb8a4be614f8ccf1b251e935404b11 -SHA256 (qtwebengine-build_fixes-1.patch) = a9e248414302b6fbd19e0404142e5ad082fb4a45eaf6f96d1b847a7b4bf8e1bd +SHA256 (qtwebengine-build_fixes-2.patch) = 0f0f202183937517fb4a52c3cc88cdde546dca1144a4ab5cf71de576251f97d2 SHA256 (qtwebengine-5.15.2-disable-fatal-warnings.patch) = 19dac26d6753f4cbe1fe2bcb911d8124ea082f55ff86b45cdcba294d3c199249 SHA256 (qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch) = 4bd5364a5f45c68e0bd452dad7a6f638142503da8c43aaeb15d577aa09369c7c SHA256 (qtwebengine-5.15.2_p20210521-clang-libc++.patch) = 64f786a919c7c145033139e6effe236459dad7b7bb5b52428e00fc70592ce05d diff --git a/qtwebengine/Pkgfile b/qtwebengine/Pkgfile index 8aee5b570..0db765a0b 100644 --- a/qtwebengine/Pkgfile +++ b/qtwebengine/Pkgfile @@ -15,7 +15,7 @@ _chromium_commit=ce00f9b5aa761866b24d6460e10aacb671c92cf0 source=(https://github.com/qt/qtwebengine/archive/$_qtwebengine_commit/$name-$version.tar.gz https://github.com/qt/qtwebengine-chromium/archive/$_chromium_commit/$name-chromium-$_chromium_commit.tar.gz - qtwebengine-build_fixes-1.patch + qtwebengine-build_fixes-2.patch qtwebengine-5.15.2-disable-fatal-warnings.patch qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch qtwebengine-5.15.2_p20210521-clang-libc++.patch @@ -36,7 +36,7 @@ build() { mkdir -pv .git src/3rdparty/chromium/.git # https://www.linuxfromscratch.org/blfs/view/svn/x/qtwebengine.html - patch -p1 -i $SRC/qtwebengine-build_fixes-1.patch + patch -p1 -i $SRC/qtwebengine-build_fixes-2.patch patch -p1 -i $SRC/qtwebengine-5.15.2-disable-fatal-warnings.patch patch -p1 -i $SRC/qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch patch -p1 -i $SRC/qtwebengine-5.15.2_p20210521-clang-libc++.patch @@ -59,9 +59,6 @@ build() { done fi - sed -e 's/^#define BA_LB_COUNT.*$/#define BA_LB_COUNT 40/' \ - -i src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc - sed -e '/^MODULE_VERSION/s/5.*/5.15.2/' -i .qmake.conf find -type f -name "*.pr[io]" | \ xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |' diff --git a/qtwebengine/qtwebengine-build_fixes-1.patch b/qtwebengine/qtwebengine-build_fixes-2.patch similarity index 93% rename from qtwebengine/qtwebengine-build_fixes-1.patch rename to qtwebengine/qtwebengine-build_fixes-2.patch index abcd88b8a..5623b9589 100644 --- a/qtwebengine/qtwebengine-build_fixes-1.patch +++ b/qtwebengine/qtwebengine-build_fixes-2.patch @@ -1,5 +1,5 @@ -Not yet Submitted By: Ken Moffat -Date: 2023-03-01 +Submitted By: Ken Moffat +Date: 2024-01-03 Initial Package Version: From git 5.15 branch. Upstream Status: Not applied Origin: upstreams and gentoo, Douglas, fedora, self, Arch. @@ -13,6 +13,16 @@ Updated on 2022-06-22: patches from Arch via gentoo to use python3, one modified The lingering arm and mips patches from an earlier fedora patchset have been dropped. Include a patch for gcc12. Updated on 2023-03-01: rework Doug's patch for upstream changes. +Updated on 2023-12-28: Applied several seds that were in the book. In particular, +the sed for shipped ffmpeg, the sed for the Python 3.11 compatibility, the +NINJAJOBS sed, and a modified version of the ICU sed (to allow support for prior +versions of ICU to work with qtwebengine still). This will leave the Pulseaudio +sed to allow updating for building without Pulseaudio installed. In addition, +added a patch to allow 32-bit x86 systems to run applications which use +QtWebEngine without crashing due to seccomp sandbox errors. That patch came +from Arch Linux 32, with minor modifications since some hunks were already +applied. +Updated on 2024-01-03: Updated the patch submission date. References to old patches, in the order they were applied, are retained to assist people wishing to review what has changed compared to previous versions. @@ -1139,7 +1149,7 @@ index a43260414db..a85b03abe75 100644 - idl_types_methods = zip(idl_types, methods) + idl_types_methods = list(zip(idl_types, methods)) - # We can’t do a single loop through all methods or simply sort them, because + # We can’t do a single loop through all methods or simply sort them, because # a method may be listed in multiple steps of the resolution algorithm, and diff --git a/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py b/chromium/third_party/blink/renderer/bindings/scripts/v8_methods.py index 5f1f89a3def..6ee8a407798 100644 @@ -1905,7 +1915,7 @@ index fa8e73d34af..7d0b84b2171 100644 --- a/src/3rdparty/chromium/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py +++ b/src/3rdparty/chromium/third_party/devtools-frontend/src/scripts/build/build_release_applications.py @@ -10,7 +10,7 @@ Builds applications in release mode: - and the application loader into a single script. + and the application loader into a single script. """ -from cStringIO import StringIO @@ -2772,3 +2782,174 @@ index 3bf1a5d57..29fd2603c 100644 -- 2.35.1 +Thirteenth, fix a build failure if a user is using the shipped version of ffmpeg +instead of the system version. + +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h qtwebengine-5.15.17/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h 2023-12-27 19:48:43.560815251 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/third_party/ffmpeg/libavcodec/x86/mathops.h 2023-12-27 19:49:57.916853340 -0600 +@@ -39,7 +39,7 @@ static av_always_inline av_const int MUL + "imull %3 \n\t" + "shrdl %4, %%edx, %%eax \n\t" + :"=a"(rt), "=d"(dummy) +- :"a"(a), "rm"(b), "ci"((uint8_t)shift) ++ :"a"(a), "rm"(b), "ci"(shift & 0x1F) + ); + return rt; + } +@@ -115,7 +115,7 @@ __asm__ volatile(\ + static inline int32_t NEG_SSR32( int32_t a, int8_t s){ + __asm__ ("sarl %1, %0\n\t" + : "+r" (a) +- : "ic" ((uint8_t)(-s)) ++ : "ic" ((-s) & 0x1F) + ); + return a; + } +@@ -124,7 +124,7 @@ static inline int32_t NEG_SSR32( int32_ + static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ + __asm__ ("shrl %1, %0\n\t" + : "+r" (a) +- : "ic" ((uint8_t)(-s)) ++ : "ic" ((-s) & 0x1F) + ); + return a; + } + +Fourteenth, include the changes for Python-3.11 compatibilty from the book. + +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/tools/grit/grit/util.py qtwebengine-5.15.17/src/3rdparty/chromium/tools/grit/grit/util.py +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/tools/grit/grit/util.py 2023-12-27 19:48:12.092992385 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/tools/grit/grit/util.py 2023-12-27 19:55:53.525150370 -0600 +@@ -211,7 +211,7 @@ def ReadFile(filename, encoding): + mode = 'rb' + encoding = None + else: +- mode = 'rU' ++ mode = 'r' + + with io.open(abs(filename), mode, encoding=encoding) as f: + return f.read() +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py qtwebengine-5.15.17/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py 2023-12-27 19:48:12.641058955 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/tools/metrics/ukm/ukm_model.py 2023-12-27 19:55:53.515149151 -0600 +@@ -42,7 +42,7 @@ _INDEX_TYPE = models.ObjectNodeType( + _STATISTICS_TYPE = models.ObjectNodeType( + 'statistics', + attributes=[ +- ('export', str, r'^(?i)(|true|false)$'), ++ ('export', str, r'(?i)^(|true|false)$'), + ], + children=[ + models.ChildType(_QUANTILES_TYPE.tag, _QUANTILES_TYPE, multiple=False), +@@ -94,7 +94,7 @@ _EVENT_TYPE = models.ObjectNodeType( + 'event', + attributes=[ + ('name', str, r'^[A-Za-z0-9.]+$'), +- ('singular', str, r'^(?i)(|true|false)$'), ++ ('singular', str, r'(?i)^(|true|false)$'), + ], + alphabetization=[ + (_OBSOLETE_TYPE.tag, _KEEP_ORDER), + +Fifteenth, include the NINJA_JOBS sed from the book: + +diff -Naurp qtwebengine-5.15.17.orig/src/core/gn_run.pro qtwebengine-5.15.17/src/core/gn_run.pro +--- qtwebengine-5.15.17.orig/src/core/gn_run.pro 2023-12-27 19:47:47.686028240 -0600 ++++ qtwebengine-5.15.17/src/core/gn_run.pro 2023-12-27 20:03:18.547432564 -0600 +@@ -62,7 +62,7 @@ build_pass|!debug_and_release { + error("GN run error for $$arch!") + } + runninja_$${arch}.target = run_ninja_$${arch} +- runninja_$${arch}.commands = $$NINJA $$ninjaflags \$\(NINJAJOBS\) -C $$gn_build_root QtWebEngineCore ++ runninja_$${arch}.commands = $$NINJA $$ninjaflags \$\(NINJA_JOBS\) -C $$gn_build_root QtWebEngineCore + QMAKE_EXTRA_TARGETS += runninja_$${arch} + runninja.depends += runninja_$${arch} + } +@@ -75,7 +75,7 @@ build_pass|!debug_and_release { + !system($$gn_run) { + error("GN run error!") + } +- runninja.commands = $$NINJA $$ninjaflags \$\(NINJAJOBS\) -C $$gn_build_root QtWebEngineCore ++ runninja.commands = $$NINJA $$ninjaflags \$\(NINJA_JOBS\) -C $$gn_build_root QtWebEngineCore + } + } + +Sixteenth, adapt QtWebEngine to changes in ICU-74, while still maintaining +compatibility with previous versions of ICU. + +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc qtwebengine-5.15.17/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc 2023-12-27 19:49:19.890230315 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator.cc 2023-12-27 20:13:13.736594613 -0600 +@@ -162,7 +162,9 @@ static const unsigned char kAsciiLineBre + }; + // clang-format on + +-#if U_ICU_VERSION_MAJOR_NUM >= 58 ++#if U_ICU_VERSION_MAJOR_NUM >= 74 ++#define BA_LB_COUNT (U_LB_COUNT - 8) ++#elif U_ICU_VERSION_MAJOR_NUM >= 58 + #define BA_LB_COUNT (U_LB_COUNT - 3) + #else + #define BA_LB_COUNT U_LB_COUNT + +Seventeenth, adapt QtWebEngine to not crash immediately on i686 systems due to +seccomp sandbox changes. This patch was lifted from ArchLinux 32. + +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-5.15.17/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2023-12-28 10:41:45.308095533 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2023-12-28 10:42:50.683525245 -0600 +@@ -198,7 +198,11 @@ ResultExpr EvaluateSyscallImpl(int fs_de + } + #endif + +- if (sysno == __NR_futex) ++ if (sysno == __NR_futex ++#if defined(__NR_futex_time64) ++ || sysno == __NR_futex_time64 ++#endif ++ ) + return RestrictFutex(); + + if (sysno == __NR_set_robust_list) +@@ -244,7 +248,7 @@ ResultExpr EvaluateSyscallImpl(int fs_de + return RestrictPrctl(); + + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__i386__) + if (sysno == __NR_socketpair) { + // Only allow AF_UNIX, PF_UNIX. Crash if anything else is seen. + static_assert(AF_UNIX == PF_UNIX, + +diff -Naurp qtwebengine-5.15.17.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc qtwebengine-5.15.17/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +--- qtwebengine-5.15.17.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2023-12-28 10:41:45.308095533 -0600 ++++ qtwebengine-5.15.17/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc 2023-12-28 10:43:10.307654288 -0600 +@@ -564,6 +564,9 @@ bool SyscallSets::IsAllowedGeneralIo(int + #endif + case __NR_ppoll: + case __NR_pselect6: ++#if defined(__i386__) ++ case __NR_pselect6_time64: ++#endif + case __NR_read: + case __NR_readv: + case __NR_pread64: +@@ -572,7 +575,7 @@ bool SyscallSets::IsAllowedGeneralIo(int + case __NR_recv: + #endif + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__i386__) + case __NR_recvfrom: // Could specify source. + case __NR_recvmsg: // Could specify source. + #endif +@@ -587,7 +590,7 @@ bool SyscallSets::IsAllowedGeneralIo(int + case __NR_send: + #endif + #if defined(__x86_64__) || defined(__arm__) || defined(__mips__) || \ +- defined(__aarch64__) ++ defined(__aarch64__) || defined(__i386__) + case __NR_sendmsg: // Could specify destination. + case __NR_sendto: // Could specify destination. + #endif