diff --git a/0001-add-pagesize-64k-support.patch b/0001-add-pagesize-64k-support.patch deleted file mode 100644 index e7f8e73d9e159fe2b95a42981d1d6415cdf2c795..0000000000000000000000000000000000000000 --- a/0001-add-pagesize-64k-support.patch +++ /dev/null @@ -1,114 +0,0 @@ -From 481f91521af752751ed7d965686145a1b08ae491 Mon Sep 17 00:00:00 2001 -From: root -Date: Thu, 9 Feb 2023 10:14:27 +0800 -Subject: [PATCH] add pagesize 64k support - ---- - .../partition_allocator/page_allocator_constants.h | 6 ++++-- - .../partition_allocator/partition_alloc_constants.h | 4 +++- - src/3rdparty/chromium/build/config/BUILD.gn | 4 ++++ - src/3rdparty/chromium/build/config/features.gni | 2 ++ - .../third_party/blink/renderer/platform/heap/heap_page.h | 2 +- - src/core/config/linux.pri | 7 +++++++ - 6 files changed, 21 insertions(+), 4 deletions(-) - -diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h -index 555700a7d..55933b6f3 100644 ---- a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h -+++ b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h -@@ -10,7 +10,7 @@ - #include "build/build_config.h" - - namespace base { --#if defined(OS_WIN) || defined(ARCH_CPU_PPC64) -+#if defined(OS_WIN) || defined(ARCH_CPU_PPC64) || defined (PAGESIZE_64K) - static constexpr size_t kPageAllocationGranularityShift = 16; // 64KB - #elif defined(_MIPS_ARCH_LOONGSON) - static constexpr size_t kPageAllocationGranularityShift = 14; // 16KB -@@ -24,7 +24,9 @@ static constexpr size_t kPageAllocationGranularityOffsetMask = - static constexpr size_t kPageAllocationGranularityBaseMask = - ~kPageAllocationGranularityOffsetMask; - --#if defined(_MIPS_ARCH_LOONGSON) -+#if defined(PAGESIZE_64K) -+static const size_t kSystemPageSize = 65536; -+#elif defined(_MIPS_ARCH_LOONGSON) - static constexpr size_t kSystemPageSize = 16384; - #elif defined(ARCH_CPU_PPC64) - // Modern ppc64 systems support 4KB and 64KB page sizes. -diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h -index fbc851c15..b6efa1f2b 100644 ---- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h -+++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h -@@ -35,7 +35,9 @@ static const size_t kBucketShift = (kAllocationGranularity == 8) ? 3 : 2; - // other constant values, we pack _all_ `PartitionRootGeneric::Alloc` sizes - // perfectly up against the end of a system page. - --#if defined(_MIPS_ARCH_LOONGSON) -+#if defined(PAGESIZE_64K) -+static const size_t kPartitionPageShift = 18; // 256KB -+#elif defined(_MIPS_ARCH_LOONGSON) - static const size_t kPartitionPageShift = 16; // 64 KiB - #elif defined(ARCH_CPU_PPC64) - static const size_t kPartitionPageShift = 18; // 256 KiB -diff --git a/src/3rdparty/chromium/build/config/BUILD.gn b/src/3rdparty/chromium/build/config/BUILD.gn -index e2462f189..5fc344311 100644 ---- a/src/3rdparty/chromium/build/config/BUILD.gn -+++ b/src/3rdparty/chromium/build/config/BUILD.gn -@@ -112,6 +112,10 @@ config("feature_flags") { - defines += [ "TOOLKIT_QT" ] - } - -+ if (use_pagesize_64k) { -+ defines += [ "PAGESIZE_64K" ] -+ } -+ - # ============================================== - # PLEASE DO NOT ADD MORE THINGS TO THIS LIST - # ============================================== -diff --git a/src/3rdparty/chromium/build/config/features.gni b/src/3rdparty/chromium/build/config/features.gni -index 390e9f006..8810f76f3 100644 ---- a/src/3rdparty/chromium/build/config/features.gni -+++ b/src/3rdparty/chromium/build/config/features.gni -@@ -33,6 +33,8 @@ declare_args() { - use_gio = is_linux && !is_chromeos && !is_chromecast - - use_qt = false -+ -+ use_pagesize_64k = false - } - # - # ============================================= -diff --git a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_page.h b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_page.h -index f9f007611..ce16abc38 100644 ---- a/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_page.h -+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/heap/heap_page.h -@@ -69,7 +69,7 @@ constexpr size_t kBlinkPageBaseMask = ~kBlinkPageOffsetMask; - constexpr size_t kBlinkPagesPerRegion = 10; - - // TODO(nya): Replace this with something like #if ENABLE_NACL. --#if defined(ARCH_CPU_PPC64) -+#if defined(ARCH_CPU_PPC64) || defined(PAGESIZE_64K) - // NaCl's system page size is 64 KiB. This causes a problem in Oilpan's heap - // layout because Oilpan allocates two guard pages for each Blink page (whose - // size is kBlinkPageSize = 2^17 = 128 KiB). So we don't use guard pages in -diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri -index 26d0dcf7d..99bb779fb 100644 ---- a/src/core/config/linux.pri -+++ b/src/core/config/linux.pri -@@ -1,5 +1,12 @@ - include(common.pri) - -+get_pagesize_res = $$system( getconf PAGESIZE ) -+message(system kernel pagesize is $$get_pagesize_res) -+equals(get_pagesize_res , 65536){ -+ message("system kernel pagesize is 64k,set use_pagesize_64k true.") -+ gn_args += use_pagesize_64k=true -+} -+ - qtConfig(webengine-embedded-build) { - gn_args += is_desktop_linux=false - } --- -2.31.1 - diff --git a/chromium-angle-nullptr.patch b/chromium-angle-nullptr.patch new file mode 100644 index 0000000000000000000000000000000000000000..78ae3891bc4bde4357973f43d66a5b1be0b4ca5f --- /dev/null +++ b/chromium-angle-nullptr.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp.nullptr qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp.nullptr 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp 2022-01-19 08:52:02.659577615 -0600 +@@ -254,7 +254,7 @@ std::string GetGLSLTypeString(GLenum typ + return "mat4"; + default: + UNREACHABLE(); +- return nullptr; ++ return ""; + } + } + diff --git a/chromium-hunspell-nullptr.patch b/chromium-hunspell-nullptr.patch new file mode 100644 index 0000000000000000000000000000000000000000..b215049804820ad0ba6f0970534438e04db8f64d --- /dev/null +++ b/chromium-hunspell-nullptr.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx.nullptr qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx.nullptr 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx 2022-01-19 10:30:40.845051982 -0600 +@@ -1725,7 +1725,7 @@ std::string HunspellImpl::get_xml_par(co + if (end == '>') + end = '<'; + else if (end != '\'' && end != '"') +- return 0; // bad XML ++ return dest; // bad XML + for (par++; *par != '\0' && *par != end; ++par) { + dest.push_back(*par); + } diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh index bb28dd4ba33e3fe7b70e2e0d7bdda4c5409cc3b7..360f33062ba3216deb4902c908aace2f8a6051fd 100755 --- a/clean_ffmpeg.sh +++ b/clean_ffmpeg.sh @@ -38,6 +38,7 @@ header_files=" libavutil/x86/asm.h \ libavutil/x86/timer.h \ libavutil/aarch64/asm.S \ libavutil/aarch64/bswap.h \ + libavutil/aarch64/cpu.h \ libavutil/aarch64/timer.h \ libavutil/arm/asm.S \ libavutil/arm/bswap.h \ @@ -61,6 +62,16 @@ header_files=" libavutil/x86/asm.h \ libavutil/avutil.h \ libavutil/bswap.h \ libavutil/buffer_internal.h \ + libavcodec/bsf_internal.h \ + libavcodec/codec.h \ + libavcodec/codec_desc.h \ + libavcodec/codec_id.h \ + libavcodec/codec_par.h \ + libavcodec/decode.h \ + libavcodec/hwconfig.h \ + libavcodec/internal.h \ + libavcodec/packet.h \ + libavcodec/packet_internal.h \ libavutil/common.h \ libavutil/colorspace.h \ libavutil/cpu_internal.h \ @@ -272,6 +283,7 @@ manual_files=" libavutil/x86/x86inc.asm \ libavutil/fixed_dsp.c \ libavutil/float_dsp.c \ libavutil/imgutils.c \ + libavutil/aarch64/cpu.c \ libavutil/aarch64/float_dsp_neon.S \ libavutil/arm/cpu.c \ libavutil/arm/float_dsp_neon.S \ diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh index bc462b86a43c400b62e0a84ae5ed411d44604c33..7bc05c0114e13c6ddf1934b55144b96ea2511b42 100755 --- a/clean_qtwebengine.sh +++ b/clean_qtwebengine.sh @@ -21,7 +21,7 @@ if [ -z "$1" ] ; then echo "usage: ./clean_qtwebengine.sh VERSION" - echo "e.g.: ./clean_qtwebengine.sh 5.14.1" + echo "e.g.: ./clean_qtwebengine.sh 5.15.12" exit 1 fi @@ -61,7 +61,7 @@ echo "ripping out openh264 sources" rm -rf "$DIRNAME/src/3rdparty/chromium/third_party/openh264/src" || exit $? echo "repacking as $DIRNAME-clean.tar.xz" -XZ_OPT="-9 -T 4" tar cJf "$DIRNAME-clean.tar.xz" "$DIRNAME" || exit $? +XZ_OPT="-8 -T 2" tar cJf "$DIRNAME-clean.tar.xz" "$DIRNAME" || exit $? echo "removing $DIRNAME" rm -rf "$DIRNAME" || exit $? diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py index 899e77454603cd765ab4dbeed6de2deb4823e344..390ee3f56a5023cfdb31849146506600ffebbbe7 100755 --- a/get_free_ffmpeg_source_files.py +++ b/get_free_ffmpeg_source_files.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2 +#!/usr/bin/python3 # Copyright 2015 Tomas Popela # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the @@ -73,7 +73,7 @@ def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm): sys.stderr.write("Something went wrong, no sources parsed!\n") sys.exit(1) - print ' '.join(output_sources) + print(' '.join(output_sources)) if __name__ == "__main__": diff --git a/python2.7-2.7.18-19.el9.1.aarch64.rpm b/python2.7-2.7.18-19.el9.1.aarch64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..6a2a5928422acbfb70ff5fd62d87b99cbfded349 Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.aarch64.rpm differ diff --git a/python2.7-2.7.18-19.el9.1.src.rpm b/python2.7-2.7.18-19.el9.1.src.rpm new file mode 100644 index 0000000000000000000000000000000000000000..6fc955fb6d7f50e413316602c06f6a7ab882fcd8 Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.src.rpm differ diff --git a/python2.7-2.7.18-19.el9.1.x86_64.rpm b/python2.7-2.7.18-19.el9.1.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..f2d73d8a6edb23d106a64f228c7bbad4ef5512ee Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.x86_64.rpm differ diff --git a/qt5-qtwebengine-c99.patch b/qt5-qtwebengine-c99.patch new file mode 100644 index 0000000000000000000000000000000000000000..bf34288c6c5abc7856bd55d60c5ea1c04363e4e1 --- /dev/null +++ b/qt5-qtwebengine-c99.patch @@ -0,0 +1,45 @@ +Avoid calls to the undeclared strlcpy function in libsync. This +prevents a build failure with future compilers. + +Submitted upstream: + +diff -up qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/BUILD.gn.c99 qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/BUILD.gn +--- qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/BUILD.gn.c99 2023-02-23 10:54:15.909380015 +0100 ++++ qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/BUILD.gn 2023-02-23 11:00:32.019601795 +0100 +@@ -21,24 +21,15 @@ if (!use_system_libsync) { + ] + } + +- config("libsync_private_config") { +- # To suppress the warning caused by strlcpy. +- cflags = [ "-Wno-implicit-function-declaration" ] +- } +- + source_set("libsync") { + sources = [ + "src/include/sync/sync.h", + "src/sw_sync.h", + "src/sync.c", +- "strlcpy.c", + ] + + configs -= [ "//build/config/compiler:chromium_code" ] +- configs += [ +- "//build/config/compiler:no_chromium_code", +- ":libsync_private_config", +- ] ++ configs += [ "//build/config/compiler:no_chromium_code" ] + + public_configs = [ ":libsync_config" ] + } +diff -up qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/src/sync.c.c99 qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/src/sync.c +--- qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/src/sync.c.c99 2023-02-23 10:54:30.650231820 +0100 ++++ qtwebengine-everywhere-src-5.15.12/src/3rdparty/chromium/third_party/libsync/src/sync.c 2023-02-23 10:54:50.116036131 +0100 +@@ -29,6 +29,7 @@ + + #include + ++#include "../strlcpy.c" + + struct sw_sync_create_fence_data { + __u32 value; diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec index 6273f62fbd10256e2cf8887f495f130a51d3d1bc..35ee0ff95f081df24e17d1da98a2dc442875082f 100644 --- a/qt5-qtwebengine.spec +++ b/qt5-qtwebengine.spec @@ -1,26 +1,30 @@ %define anolis_release 1 -Excludearch:loongarch64 %global qt_module qtwebengine %global _hardened_build 1 -# define to build docs, need to undef this for bootstrapping +# package-notes causes FTBFS (#2043178) +%undefine _package_note_file + +# define to build docs, may need to undef this for bootstrapping # where qt5-qttools (qt5-doctools) builds are not yet available -%global docs 1 +%global docs 0 -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?epel} >= 9 || 0%{?anolis} > 8 # need libvpx >= 1.8.0 (need commit 297dfd869609d7c3c5cd5faa3ebc7b43a394434e) %global use_system_libvpx 1 +# For screen sharing on Wayland, currently Fedora only thing - no epel +#global pipewire 1 %endif -%if 0%{?fedora} > 30 || 0%{?epel} > 7 +%if 0%{?fedora} > 30 || 0%{?epel} > 7 || 0%{?anolis} > 8 # need libwebp >= 0.6.0 %global use_system_libwebp 1 %global use_system_jsoncpp 1 %global use_system_re2 1 %endif -%if 0%{?fedora} > 31 && 0%{?fedora} < 33 -# need libicu >= 64, only currently available on f32+ +%if 0%{?fedora} > 32 || 0%{?epel} >= 9 +# need libicu >= 65, only currently available on f33+ %global use_system_libicu 1 %endif @@ -54,35 +58,37 @@ Excludearch:loongarch64 Summary: Qt5 - QtWebEngine components Name: qt5-qtwebengine -Version: 5.15.2 -Release: 1.04.%{anolis_release}%{?dist} +Version: 5.15.12 +Release: 5.%{anolis_release}%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html # The other licenses are from Chromium and the code it bundles License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) URL: http://www.qt.io -# leaned tarball with patent-encumbered codecs removed from the bundled FFmpeg -# wget http://download.qt.io/official_releases/qt/5.15/5.15.1/submodules/qtwebengine-everywhere-src-5.15.1.tar.xz +# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg +# ./qtwebengine-release.sh # ./clean_qtwebengine.sh 5.15.1 Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz +# release script used above +Source1: qtwebengine-release.sh # cleanup scripts used above -Source1: clean_qtwebengine.sh -Source2: clean_ffmpeg.sh -Source3: get_free_ffmpeg_source_files.py +Source2: clean_qtwebengine.sh +Source3: clean_ffmpeg.sh +Source4: get_free_ffmpeg_source_files.py # macros Source10: macros.qt5-qtwebengine # pulseaudio headers Source20: pulseaudio-12.2-headers.tar.gz -# some tweaks to linux.pri (system yasm, link libpci, run unbundling script) -Patch0: qtwebengine-everywhere-src-5.10.0-linux-pri.patch -# quick hack to avoid checking for the nonexistent icudtl.dat and silence the -# resulting warnings - not upstreamable as is because it removes the fallback -# mechanism for the ICU data directory (which is not used in our builds because -# we use the system ICU, which embeds the data statically) completely -Patch1: qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch +## Python2 Sources +## src.rpm is Fedora spec with tests and tkinter turned off +## binary rpms have been built on epel9 +Source100: python2.7-2.7.18-19.el9.1.src.rpm +Source101: python2.7-2.7.18-19.el9.1.aarch64.rpm +Source102: python2.7-2.7.18-19.el9.1.x86_64.rpm + # fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the # ARM flags with our %%qmake_qt5 macro, including for the next patch Patch2: qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch @@ -92,18 +98,26 @@ Patch3: qtwebengine-opensource-src-5.9.0-no-neon.patch # workaround FTBFS against kernel-headers-5.2.0+ Patch4: qtwebengine-SIOCGSTAMP.patch # fix build when using qt < 5.14 -Patch5: qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch -# remove Android dependencies from openmax_dl ARM NEON detection (detect.c) -Patch10: qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch -# Force verbose output from the GN bootstrap process -Patch21: qtwebengine-everywhere-src-5.12.0-gn-bootstrap-verbose.patch +Patch5: qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch +# gcc-12 FTBFS "use of deleted function" +Patch6: chromium-angle-nullptr.patch +Patch7: chromium-hunspell-nullptr.patch +Patch8: qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch # Fix/workaround FTBFS on aarch64 with newer glibc Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch # Use Python2 -Patch26: qtwebengine-everywhere-5.13.2-use-python2.patch -# Missing #includes for gcc-11 -Patch27: qtwebengine-gcc11.patch -Patch100: 0001-add-pagesize-64k-support.patch +Patch26: qtwebengine-everywhere-5.15.5-use-python2.patch +# FTBFS TRUE/FALSE undeclared +Patch31: qtwebengine-everywhere-src-5.15.5-TRUE.patch +Patch32: qtwebengine-skia-missing-includes.patch +# Fix QtWebEngine on Apple M1 hardware (patch from Arch Linux ARM) +## Cf. https://bugreports.qt.io/browse/QTBUG-108674 +## Cf. https://bugzilla.redhat.com/show_bug.cgi?id=2144200 +## From: https://chromium-review.googlesource.com/c/chromium/src/+/3545665 +Patch33: qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch +Patch34: qtwebengine-fix-build.patch +Patch35: qt5-qtwebengine-c99.patch + ## Upstream patches: %if 0%{?fedora} || 0%{?epel} > 7 @@ -111,6 +125,10 @@ Patch100: 0001-add-pagesize-64k-support.patch ExclusiveArch: %{qt5_qtwebengine_arches} %endif +# Build on CentOS Stream 9 pulls in old gcc-toolset-12-binutils-gold +# Remove this when version 2.38-14 is no longer pulled in. +BuildRequires: binutils-gold >= 2.38-16 +BuildRequires: make BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtbase-private-devel # TODO: check of = is really needed or if >= would be good enough -- rex @@ -135,16 +153,17 @@ BuildRequires: git-core BuildRequires: gperf BuildRequires: krb5-devel %if 0%{?use_system_libicu} -BuildRequires: libicu-devel >= 64 +BuildRequires: libicu-devel >= 65 %endif BuildRequires: libjpeg-devel +BuildRequires: nodejs %if 0%{?use_system_re2} BuildRequires: re2-devel %endif -BuildRequires: snappy-devel -%ifarch %{ix86} x86_64 -BuildRequires: yasm +%if 0%{?pipewire} +BuildRequires: pkgconfig(libpipewire-0.3) %endif +BuildRequires: snappy-devel BuildRequires: pkgconfig(expat) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(glib-2.0) @@ -163,12 +182,13 @@ BuildRequires: pkgconfig(libwebp) >= 0.6.0 BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(opus) -BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(poppler-cpp) BuildRequires: pkgconfig(zlib) %if 0%{?fedora} && 0%{?fedora} < 30 BuildRequires: pkgconfig(minizip) %else +BuildConflicts: minizip-devel Provides: bundled(minizip) = 1.2 %endif BuildRequires: pkgconfig(x11) @@ -190,21 +210,31 @@ BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbfile) ## https://bugreports.qt.io/browse/QTBUG-59094 +## requires libxml2 built with icu support #BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) BuildRequires: perl-interpreter # fesco exception to allow python2 use: https://pagure.io/fesco/issue/2208 # per https://fedoraproject.org/wiki/Changes/RetirePython2#FESCo_exceptions # Only the interpreter is needed -%if 0%{?fedora} > 29 || 0%{?rhel} > 8 +%if 0%{?fedora} > 29 || 0%{?rhel} > 8 || 0%{?anolis} > 8 +%if 0%{?rhel} && 0%{?rhel} == 9 || 0%{?anolis} > 8 +BuildRequires: %{__python3} +%else BuildRequires: %{__python2} +%endif %else BuildRequires: python2 BuildRequires: python2-rpm-macros %endif %if 0%{?use_system_libvpx} -BuildRequires: pkgconfig(vpx) >= 1.7.0 +BuildRequires: pkgconfig(vpx) >= 1.8.0 %endif +# For python on EPEL9, These get pulled in via python2 +BuildRequires: libtirpc +BuildRequires: libnsl2 +BuildRequires: python-rpm-macros # extra (non-upstream) functions needed, see # src/3rdparty/chromium/third_party/sqlite/README.chromium for details @@ -223,16 +253,18 @@ BuildRequires: pkgconfig(vpx) >= 1.7.0 # Of course, Chromium itself is bundled. It cannot be unbundled because it is # not a library, but forked (modified) application code. -# Some security fixes (up to version 64.0.3282.140) are backported, see: -# http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=61-based -# see dist/changes-5.10.1 for the version numbers (base, security fixes) and for -# a list of CVEs fixed by the added security backports -# See Patch101 for additional fixes applied (up to version 65.0.3325.146) -Provides: bundled(chromium) = 61.0.3163.140 +Provides: bundled(chromium) = 87.0.4280.144 # Bundled in src/3rdparty/chromium/third_party: # Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, # except where specified otherwise. +# Note that many of those libraries are git snapshots, so version numbers are +# necessarily approximate. +# Also note that the list is probably not complete anymore due to Chromium +# adding more and more bundled stuff at every release, some of which (but not +# all) is actually built in QtWebEngine. +# src/3rdparty/chromium/third_party/angle/doc/ChoosingANGLEBranch.md points to +# http://omahaproxy.appspot.com/deps.json?version=87.0.4280.144 chromium_branch Provides: bundled(angle) = 2422 # Google's fork of OpenSSL # We cannot build against NSS instead because it no longer works with NSS 3.21: @@ -248,43 +280,41 @@ Provides: bundled(brotli) # out. See clean_qtwebengine.sh, clean_ffmpeg.sh, and # get_free_ffmpeg_source_files.py. # see src/3rdparty/chromium/third_party/ffmpeg/Changelog for the version number -Provides: bundled(ffmpeg) = 3.3 +Provides: bundled(ffmpeg) = 4.3 Provides: bundled(hunspell) = 1.6.0 Provides: bundled(iccjpeg) # bundled as "khronos", headers only Provides: bundled(khronos_headers) # bundled as "leveldatabase" -Provides: bundled(leveldb) = 1.20 +Provides: bundled(leveldb) = 1.22 # bundled as "libjingle_xmpp" Provides: bundled(libjingle) # see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number -Provides: bundled(libsrtp) = 2.1.0 +Provides: bundled(libsrtp) = 2.2.0 %if !0%{?use_system_libvpx} -# claims "Version: 1.6.0", but according to the fine print, this is actually a -# snapshot from master from after the 1.6.1 release -Provides: bundled(libvpx) = 1.6.1 +Provides: bundled(libvpx) = 1.8.2 %endif %if !0%{?use_system_libwebp} -Provides: bundled(libwebp) = 0.6.0 +Provides: bundled(libwebp) = 1.1.0-28.g55a080e5 %endif # bundled as "libxml" # see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h -Provides: bundled(libxml2) = 2.9.4 +# post 2.9.9 snapshot?, 2.9.9-0b3c64d9f2f3e9ce1a98d8f19ee7a763c87e27d5 +Provides: bundled(libxml2) = 2.9.10 # see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version -Provides: bundled(libxslt) = 1.1.29 +Provides: bundled(libxslt) = 1.1.34 Provides: bundled(libXNVCtrl) = 302.17 -Provides: bundled(libyuv) = 1658 +Provides: bundled(libyuv) = 1768 Provides: bundled(modp_b64) -Provides: bundled(openmax_dl) = 1.0.2 Provides: bundled(ots) +Provides: bundled(re2) # see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version -#Provides: bundled(protobuf) = 3.0.0-0.1.beta3 +Provides: bundled(protobuf) = 3.9.0 Provides: bundled(qcms) = 4 -Provides: bundled(sfntly) Provides: bundled(skia) # bundled as "smhasher" -Provides: bundled(SMHasher) = 0-0.1.svn147 -Provides: bundled(sqlite) = 3.20 +Provides: bundled(SMHasher) = 0-147 +Provides: bundled(sqlite) = 3.35.5 Provides: bundled(usrsctp) Provides: bundled(webrtc) = 90 @@ -297,7 +327,6 @@ Provides: bundled(x86inc) # Bundled in src/3rdparty/chromium/base/third_party: # Check src/3rdparty/chromium/third_party/base/*/README.chromium for version # numbers, except where specified otherwise. -Provides: bundled(dmg_fp) Provides: bundled(dynamic_annotations) = 4384 Provides: bundled(superfasthash) = 0 Provides: bundled(symbolize) @@ -322,7 +351,7 @@ Provides: bundled(nsURLParsers) # Bundled outside of third_party, apparently not considered as such by Chromium: Provides: bundled(mojo) # see src/3rdparty/chromium/v8/include/v8_version.h for the version number -Provides: bundled(v8) = 6.1.534.44 +Provides: bundled(v8) = 8.7.220.35 # bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc) # The version number is 5.3, the last version that upstream released, years ago: # http://www.netlib.org/fdlibm/readme @@ -330,6 +359,11 @@ Provides: bundled(fdlibm) = 5.3 %{?_qt5_version:Requires: qt5-qtbase%{?_isa} = %{_qt5_version}} +%if 0%{?use_system_icu} +# Those versions were built with bundled ICU and want the data file. +Conflicts: qt5-qtwebengine-freeworld < 5.15.2-2 +%endif + %if 0%{?rhel} == 7 BuildRequires: devtoolset-7-toolchain %endif @@ -385,45 +419,40 @@ mv pulse src/3rdparty/chromium/ pushd src/3rdparty/chromium popd -%patch0 -p1 -b .linux-pri -%if 0%{?use_system_libicu} -%patch1 -p1 -b .no-icudtl-dat +%if 0%{?rhel} && 0%{?rhel} == 9 || 0%{?anolis} > 8 +# Install python2 from rpms +mkdir python2 +pushd python2 +%ifarch aarch64 +rpm2cpio %{SOURCE101} | cpio -idm +%endif +%ifarch x86_64 +rpm2cpio %{SOURCE102} | cpio -idm +%endif +popd %endif + %patch2 -p1 -b .fix-extractcflag %if !0%{?arm_neon} %patch3 -p1 -b .no-neon %endif %patch4 -p1 -b .SIOCGSTAMP -#patch5 -p1 -b .QT_DEPRECATED_VERSION +%patch5 -p1 -b .QT_DEPRECATED_VERSION +%patch6 -p1 -b .angle_nullptr +%patch7 -p1 -b .hunspell_nullptr +#if 0%{?pipewire} +%patch8 -p1 -b .libpipewire-0.3 +#endif ## upstream patches - -#patch10 -p1 -b .openmax-dl-neon -## NEEDSWORK -#patch21 -p1 -b .gn-bootstrap-verbose %patch24 -p1 -b .aarch64-new-stat %patch26 -p1 -b .use-python2 -%patch27 -p1 -b .gcc11 -%patch100 -p1 - -# the xkbcommon config/feature was renamed in 5.12, so need to adjust QT_CONFIG references -# when building on older Qt releases -%if "%{_qt5_version}" < "5.12.0" -sed -i -e 's|QT_CONFIG(xkbcommon)|QT_CONFIG(xkbcommon_evdev)|g' src/core/web_event_factory.cpp -%endif - -# fix // in #include in content/renderer/gpu to avoid debugedit failure -#sed -i -e 's!gpu//!gpu/!g' \ -# src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc -# and another one in 2 files in WebRTC -sed -i -e 's!audio_processing//!audio_processing/!g' \ - src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft.cc \ - src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc +%patch31 -p1 -b .TRUE +%patch32 -p1 -b .skia-missing-includes +%patch33 -p1 -b .aarch64-16kb-support +%patch34 -p1 -b .fix-build -# remove ./ from #line commands in ANGLE to avoid debugedit failure (?) -#sed -i -e 's!\./!!g' \ -# src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \ -# src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp +%patch35 -p1 -b .c99 # delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we # never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS @@ -445,23 +474,39 @@ cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri %endif +%if 0%{?docs} # generate qtwebengine-3rdparty.qdoc, it is missing from the tarball pushd src/3rdparty -%{__python2} chromium/tools/licenses.py \ +%{__python3} chromium/tools/licenses.py \ --file-template ../../tools/about_credits.tmpl \ --entry-template ../../tools/about_credits_entry.tmpl \ credits >../webengine/doc/src/qtwebengine-3rdparty.qdoc popd +%endif # copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium +# consider doing this as part of the tarball creation step instead? rdieter +# fix/workaround +# fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory +if [ ! -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" ]; then +%_qt5_bindir/syncqt.pl -version %{version} +fi + +# abort if this doesn't get created by syncqt.pl +test -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" + %build %if 0%{?rhel} == 7 . /opt/rh/devtoolset-7/enable %endif +# python2 path +export PATH=$(pwd)/python2/usr/bin:$PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/python2/usr/lib64 + export STRIP=strip export NINJAFLAGS="%{__ninja_common_opts}" export NINJA_PATH=%{__ninja} @@ -471,6 +516,7 @@ export NINJA_PATH=%{__ninja} CONFIG+="link_pulseaudio use_gold_linker" \ %{?use_system_libicu:QMAKE_EXTRA_ARGS+="-system-webengine-icu"} \ QMAKE_EXTRA_ARGS+="-webengine-kerberos" \ + %{?pipewire:QMAKE_EXTRA_ARGS+="-webengine-webrtc-pipewire"} \ . # avoid %%make_build for now, the -O flag buffers output from intermediate build steps done via ninja @@ -497,14 +543,6 @@ sed -i \ -e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" \ %{buildroot}%{rpm_macros_dir}/macros.qt5-qtwebengine -# hardlink files to {_bindir} -mkdir -p %{buildroot}%{_bindir} -pushd %{buildroot}%{_qt5_bindir} -for i in * ; do - ln -v ${i} %{buildroot}%{_bindir}/${i} -done -popd - ## .prl/.la file love # nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs pushd %{buildroot}%{_qt5_libdir} @@ -530,7 +568,11 @@ sed -i -e "s|%{version} \${_Qt5WebEngine|%{lesser_version} \${_Qt5WebEngine|" \ %ldconfig_scriptlets +%if 0%{?fedora} > 35 || 0%{?epel} > 9 +%filetriggerin -- %{_datadir}/hunspell +%else %filetriggerin -- %{_datadir}/myspell +%endif while read filename ; do case "$filename" in *.dic) @@ -541,9 +583,11 @@ while read filename ; do done %files -%license LICENSE.* src/webengine/doc/src/qtwebengine-3rdparty.qdoc +%license LICENSE.* +%if 0%{?docs} +%license src/webengine/doc/src/qtwebengine-3rdparty.qdoc +%endif %{_qt5_libdir}/libQt5*.so.* -%{_bindir}/qwebengine_convert_dict %{_qt5_bindir}/qwebengine_convert_dict %{_qt5_libdir}/qt5/qml/* %{_qt5_libdir}/qt5/libexec/QtWebEngineProcess @@ -617,7 +661,6 @@ done %{_qt5_headerdir}/Qt*/ %{_qt5_libdir}/libQt5*.so %{_qt5_libdir}/libQt5*.prl -#{_qt5_libdir}/Qt5WebEngineCore.la %{_qt5_libdir}/cmake/Qt5*/ %{_qt5_libdir}/pkgconfig/Qt5*.pc %{_qt5_archdatadir}/mkspecs/modules/*.pri @@ -635,20 +678,139 @@ done %changelog -* Mon Aug 28 2023 yangxianzhao - 5.15.2-1.04.1 -- Specification spec file +* Mon Oct 09 2023 yangxianzhao - 5.15.12-5.1 +- fxi build error + +* Tue Apr 11 2023 Jan Grulich - 5.15.12-5 +- Rebuild (qt5) + +* Thu Feb 23 2023 Florian Weimer - 5.15.12-4 +- Port bundled libsync to C99 (#2155642) + +* Wed Feb 15 2023 Tom Callaway - 5.15.12-3 +- rebuild for libvpx + +* Fri Jan 20 2023 Fedora Release Engineering - 5.15.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Jan 16 2023 Jan Grulich - 5.15.12-1 +- 5.15.12 + +* Fri Jan 06 2023 Jan Grulich - 5.15.10-6 +- Rebuild (qt5) + +* Sat Dec 31 2022 Pete Walter - 5.15.10-5 +- Rebuild for ICU 72 + +* Sun Nov 20 2022 Neal Gompa - 5.15.10-4 +- Add patch to backport support for 16k pages on AArch64 (#2144200) + +* Mon Oct 31 2022 Jan Grulich - 5.15.10-3 +- Rebuild (qt5) + +* Wed Sep 21 2022 Jan Grulich - 5.15.10-2 +- Rebuild (qt5) + +* Mon Aug 29 2022 Ankur Sinha - 5.15.10-1 +- Update to 5.15.10 + +* Tue Aug 02 2022 Frantisek Zatloukal - 5.15.9-5 +- Rebuilt for ICU 71.1 + +* Sat Jul 23 2022 Fedora Release Engineering - 5.15.9-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jul 20 2022 Kevin Kofler - 5.15.9-3 +- Drop obsolete no-icudtl-dat patch, code has been fixed upstream since 5.11.0 + +* Thu Jul 14 2022 Jan Grulich - 5.15.9-2 +- Rebuild (Qt 5.15.5) + +* Wed Jun 01 2022 Rex Dieter - 5.15.9-1 +- 5.15.9 + +* Tue May 17 2022 Jan Grulich - 5.15.8-7 +- Rebuild (Qt 5.15.4) + +* Tue Mar 29 2022 Parag Nemade - 5.15.8-6 +- Update hunspell dictionary path by adding conditional support + F36 Change https://fedoraproject.org/wiki/Changes/Hunspell_dictionary_dir_change + +* Wed Mar 09 2022 Jan Grulich - 5.15.8-5 +- Rebuild (qt5) + +* Thu Feb 17 2022 Rex Dieter - 5.15.8-4 +- Screen sharing support under Wayland (#2054690) + +* Tue Feb 01 2022 Troy Dawson - 5.15.8-3.1 +- Specifically for epel9 only, until things switch to python3 +- Bundle python2 for building only +- Bundled re2 +- No docs + +* Thu Jan 27 2022 Tom Callaway - 5.15.8-3 +- rebuild for libvpx + +* Sun Jan 23 2022 Kevin Kofler - 5.15.8-2 +- Update Provides: bundled(*) version numbers, remove ones dropped upstream +- Restore Provides: bundled(protobuf), unbundling support dropped years ago +- Remove no longer used BuildRequires: yasm and pkgconfig(protobuf) + +* Tue Jan 11 2022 Rex Dieter - 5.15.8-1 +- 5.15.8 +- %%undefine _package_note_file (#2043178) + +* Sat Jan 08 2022 Miro HronĨok - 5.15.6-3 +- Rebuilt for libre2.so.9 + +* Mon Sep 20 2021 Rex Dieter - 5.15.6-2 +- patch use of deprecated harfbuzz apis + +* Fri Sep 03 2021 Rex Dieter - 5.15.6-1 +- 5.15.6 + +* Thu Aug 12 2021 Troy Dawson - 5.15.5-3 +- Fix use-python2.patch + +* Fri Jul 23 2021 Fedora Release Engineering - 5.15.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jun 23 2021 Rex Dieter - 5.15.5-1 +- 5.15.5 + +* Wed Jun 16 2021 Rex Dieter - 5.15.2-12 +- workaround SIGSTKSZ FTBFS (#1945595) +- workaround 'TRUE'/'FALSE' was not declared in this scope + +* Thu May 20 2021 Pete Walter - 5.15.2-11 +- Rebuild for ICU 69 + +* Mon May 10 2021 Jonathan Wakely - 5.15.2-10 +- Rebuilt for removed libstdc++ symbols (#1937698) + +* Tue Mar 30 2021 Jonathan Wakely - 5.15.2-9 +- Rebuilt for removed libstdc++ symbol (#1937698) + +* Tue Jan 26 2021 Kevin Kofler - 5.15.2-8 +- Add versioned Conflicts with -freeworld built against bundled ICU (#1920379) + +* Sat Jan 23 2021 Kevin Kofler - 5.15.2-7 +- Fix sandbox issue on 32-bit architectures with glibc >= 2.31 (from Debian) + +* Sat Jan 23 2021 Kevin Kofler - 5.15.2-6 +- Reenable system ICU on F33+, ICU 67 supported since 5.15.1 according to Debian -* Wed Mar 01 2023 liweiganga - 5.15.2-1.04 -- feat: modify patch100 +* Wed Jan 20 2021 Kevin Kofler - 5.15.2-5 +- Fix sandbox issue breaking text rendering with glibc 2.33 (#1904652) -* Thu Feb 09 2023 mahailiang - 5.15.2-1.03 -- feat: add pagesize 64k support +* Wed Dec 30 2020 Mattia Verga - 5.15.2-4 +- Rebuild for gcc bugfix upgrade -* Wed Jan 11 2023 liweiganga - 5.15.2-1.02 -- rebuild: rebuild (libevent) +* Fri Dec 04 2020 Jeff Law - 5.15.2-3 +- Fix another missing #include for gcc-11 -* Tue Dec 06 2022 binyanling - 5.15.2-1.01 -- arch:Excludearch loongarch64 +* Tue Nov 24 07:55:13 CET 2020 Jan Grulich - 5.15.2-2 +- Rebuild for qtbase with -no-reduce-relocations option * Fri Nov 20 09:12:35 CET 2020 Jan Grulich - 5.15.2-1 - 5.15.2 diff --git a/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch b/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch new file mode 100644 index 0000000000000000000000000000000000000000..01ae8f665dd9a5166bbca467d3a88de52d75a81e --- /dev/null +++ b/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch @@ -0,0 +1,372 @@ +From 0e827b4f741e57538c24d90b63659dbdb0992cb0 Mon Sep 17 00:00:00 2001 +From: Jorrit Jongma +Date: Tue, 12 Apr 2022 17:09:34 +0000 +Subject: [PATCH] [Backport] [PA] Support 16kb pagesize on Linux+ARM64 + +This makes the system pagesize a run-time property. + +ARM64 supports 4kb, 16kb, and 64kb page sizes. Previously, only 4kb +was supported by Chromium. This patch adds 16kb support, as is used +for example by Asahi Linux on M1 Macs. The rare 64kb case is still +not supported due to further changes needed to SlotSpanMetadata. + +The implementation follows the changes made to support run-time page +size on macOS. On macOS, the required constants are conveniently +injected before any code runs, while on Linux a function call is +needed, complicating initialization. + +The new PageCharacteristics structure holds the page size and shift +as std::atomic which are initialized on first use. + +Bug: 1301788 +Change-Id: I8ceead40de53ba7a2ec248bd6ef46f2a521dd29c +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3545665 +Reviewed-by: Benoit Lize +Reviewed-by: Mark Mentovai +Commit-Queue: Mark Mentovai +Cr-Commit-Position: refs/heads/main@{#991588} + +(adapted from commit a704c3a94179e6f3abb28f090d096ced72657d7c) + +Bug-Fedora: 2144200 +Task-number: QTBUG-108674 +--- + .../address_space_randomization.h | 15 ++++++ + .../page_allocator_constants.h | 51 +++++++++++++++++- + .../partition_address_space.cc | 6 +++ + .../partition_allocator/partition_alloc.cc | 2 +- + .../partition_alloc_constants.h | 5 +- + .../address_space_randomization.h | 15 ++++++ + .../partition_allocator/page_allocator.cc | 8 +++ + .../page_allocator_constants.h | 52 ++++++++++++++++++- + .../partition_allocator/partition_alloc.cc | 2 +- + .../partition_alloc_constants.h | 5 +- + 10 files changed, 153 insertions(+), 8 deletions(-) + +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h b/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h +index e77003eab25..31ac05b86f5 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h +@@ -119,6 +119,21 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + ++ #elif defined(OS_LINUX) ++ ++ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on ++ // page size and number of levels of translation pages used. We use ++ // 39-bit as base as all setups should support this, lowered to 38-bit ++ // as ASLROffset() could cause a carry. ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLRMask() { ++ return AslrMask(38); ++ } ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLROffset() { ++ return AslrAddress(0x1000000000ULL); ++ } ++ + #else + + // ARM64 on Linux has 39-bit user space. Use 38 bits since ASLROffset() +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h +index c42fe2835ff..dc7486608b9 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h +@@ -24,6 +24,31 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++// This should work for all POSIX (if needed), but currently all other ++// supported OS/architecture combinations use either hard-coded values ++// (such as x86) or have means to determine these values without needing ++// atomics (such as macOS on arm64). ++ ++// Page allocator constants are run-time constant ++#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) ++ ++#include ++#include ++ ++namespace base::internal { ++ ++// Holds the current page size and shift, where size = 1 << shift ++// Use PageAllocationGranularity(), PageAllocationGranularityShift() ++// to initialize and retrieve these values safely. ++struct PageCharacteristics { ++ std::atomic size; ++ std::atomic shift; ++}; ++extern PageCharacteristics page_characteristics; ++ ++} // namespace base::internal ++ + #else + + // When defined, page size constants are fixed at compile time. When not +@@ -36,11 +61,17 @@ + + #endif + ++namespace base { ++// Forward declaration, implementation below ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t ++PageAllocationGranularity(); ++} ++ + namespace { + + #if !defined(OS_APPLE) + +-constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int PageAllocationGranularityShift() { + #if defined(OS_WIN) || defined(ARCH_CPU_PPC64) + // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page + // sizes. Since 64kB is the de facto standard on the platform and binaries +@@ -49,6 +80,15 @@ constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { + return 16; // 64kB + #elif defined(_MIPS_ARCH_LOONGSON) + return 14; // 16kB ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) ++ // page sizes. Retrieve from or initialize cache. ++ int shift = base::internal::page_characteristics.shift.load(std::memory_order_relaxed); ++ if (UNLIKELY(shift == 0)) { ++ shift = __builtin_ctz((int)base::PageAllocationGranularity()); ++ base::internal::page_characteristics.shift.store(shift, std::memory_order_relaxed); ++ } ++ return shift; + #else + return 12; // 4kB + #endif +@@ -64,6 +104,15 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t + PageAllocationGranularity() { + #if defined(OS_APPLE) + return vm_page_size; ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or ++ // initialize cache. ++ int size = internal::page_characteristics.size.load(std::memory_order_relaxed); ++ if (UNLIKELY(size == 0)) { ++ size = getpagesize(); ++ internal::page_characteristics.size.store(size, std::memory_order_relaxed); ++ } ++ return size; + #else + return 1ULL << PageAllocationGranularityShift(); + #endif +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc +index 03883bcb113..90efc51c838 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc +@@ -75,6 +75,12 @@ void PartitionAddressSpace::UninitForTesting() { + internal::AddressPoolManager::GetInstance()->ResetForTesting(); + } + ++#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ ++PageCharacteristics page_characteristics; ++ ++#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ + #endif // defined(PA_HAS_64_BITS_POINTERS) + + } // namespace internal +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc +index daeb6d5cb17..7c434b5e697 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc +@@ -522,7 +522,7 @@ static size_t PartitionPurgePage(internal::PartitionPage* page, + #if defined(PAGE_ALLOCATOR_CONSTANTS_ARE_CONSTEXPR) + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerSlotSpan) / SystemPageSize(); +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is + // always SystemPageSize() << 2, so regardless of what the run time page size +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +index c8268ec30a0..f03ba1e4ab4 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -57,10 +57,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { + return 18; // 256 KiB + } +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || \ ++ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { +- return vm_page_shift + 2; ++ return PageAllocationGranularityShift() + 2; + } + #else + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h +index 28c8271fd68..3957e0cdf76 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h +@@ -120,6 +120,21 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + ++ #elif defined(OS_LINUX) ++ ++ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on ++ // page size and number of levels of translation pages used. We use ++ // 39-bit as base as all setups should support this, lowered to 38-bit ++ // as ASLROffset() could cause a carry. ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLRMask() { ++ return AslrMask(38); ++ } ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLROffset() { ++ return AslrAddress(0x1000000000ULL); ++ } ++ + #else + + // ARM64 on Linux has 39-bit user space. Use 38 bits since kASLROffset +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc +index 91d00d2fbca..597d5f84cb1 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc +@@ -255,5 +255,13 @@ uint32_t GetAllocPageErrorCode() { + return s_allocPageErrorCode; + } + ++#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ ++namespace internal { ++PageCharacteristics page_characteristics; ++} ++ ++#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ + } // namespace base + } // namespace pdfium +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h +index fdc65ac47b7..f826308839d 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h +@@ -24,6 +24,31 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++// This should work for all POSIX (if needed), but currently all other ++// supported OS/architecture combinations use either hard-coded values ++// (such as x86) or have means to determine these values without needing ++// atomics (such as macOS on arm64). ++ ++// Page allocator constants are run-time constant ++#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) ++ ++#include ++#include ++ ++namespace pdfium::base::internal { ++ ++// Holds the current page size and shift, where size = 1 << shift ++// Use PageAllocationGranularity(), PageAllocationGranularityShift() ++// to initialize and retrieve these values safely. ++struct PageCharacteristics { ++ std::atomic size; ++ std::atomic shift; ++}; ++extern PageCharacteristics page_characteristics; ++ ++} // namespace base::internal ++ + #else + + // When defined, page size constants are fixed at compile time. When not +@@ -37,11 +62,18 @@ + #endif + + namespace pdfium { ++ ++namespace base { ++// Forward declaration, implementation below ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t ++PageAllocationGranularity(); ++} ++ + namespace { + + #if !defined(OS_APPLE) + +-constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int PageAllocationGranularityShift() { + #if defined(OS_WIN) || defined(ARCH_CPU_PPC64) + // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page + // sizes. Since 64kB is the de facto standard on the platform and binaries +@@ -50,6 +82,15 @@ constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { + return 16; // 64kB + #elif defined(_MIPS_ARCH_LOONGSON) + return 14; // 16kB ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) ++ // page sizes. Retrieve from or initialize cache. ++ int shift = base::internal::page_characteristics.shift.load(std::memory_order_relaxed); ++ if (UNLIKELY(shift == 0)) { ++ shift = __builtin_ctz((int)base::PageAllocationGranularity()); ++ base::internal::page_characteristics.shift.store(shift, std::memory_order_relaxed); ++ } ++ return shift; + #else + return 12; // 4kB + #endif +@@ -65,6 +106,15 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t + PageAllocationGranularity() { + #if defined(OS_APPLE) + return vm_page_size; ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or ++ // initialize cache. ++ int size = internal::page_characteristics.size.load(std::memory_order_relaxed); ++ if (UNLIKELY(size == 0)) { ++ size = getpagesize(); ++ internal::page_characteristics.size.store(size, std::memory_order_relaxed); ++ } ++ return size; + #else + return 1ULL << PageAllocationGranularityShift(); + #endif +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc +index 2e5e87fa7e6..89b9f6217a6 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc +@@ -486,7 +486,7 @@ static size_t PartitionPurgePage(internal::PartitionPage* page, bool discard) { + #if defined(PAGE_ALLOCATOR_CONSTANTS_ARE_CONSTEXPR) + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerSlotSpan) / SystemPageSize(); +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is + // always SystemPageSize() << 2, so regardless of what the run time page size +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h +index 71d63ba4146..a6d83626741 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -50,10 +50,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { + return 18; // 256 KiB + } +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || \ ++ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { +- return vm_page_shift + 2; ++ return PageAllocationGranularityShift() + 2; + } + #else + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int +-- +2.38.1 + diff --git a/qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch b/qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch similarity index 40% rename from qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch rename to qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch index 69b1bbfd1be6553cacbb1ee6714b2514606fcc18..3771308bc1be4a5257b1f861918647647c911698 100644 --- a/qtwebengine-5.14-1-QT_DEPRECATED_VERSION.patch +++ b/qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch @@ -1,10 +1,10 @@ -diff -up qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h ---- qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED 2020-01-20 05:17:16.000000000 -0600 -+++ qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebenginedownloaditem.h 2020-03-24 15:42:03.558394148 -0500 -@@ -119,9 +119,13 @@ public: - QUrl url() const; +diff -up qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED_VERSION qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h +--- qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED_VERSION 2021-06-24 07:34:27.991417071 -0500 ++++ qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h 2021-06-24 07:36:28.996937357 -0500 +@@ -120,9 +120,13 @@ public: QString mimeType() const; #if QT_DEPRECATED_SINCE(5, 14) + #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) +#if QT_VERSION >= QT_VERSION_CHECK(5,14,0) QT_DEPRECATED_VERSION_X(5, 14, "Use downloadDirectory() and downloadFileName() instead") +#endif @@ -13,5 +13,5 @@ diff -up qtwebengine-everywhere-src-5.14.1.orig/src/webenginewidgets/api/qwebeng QT_DEPRECATED_VERSION_X(5, 14, "Use setDownloadDirectory() and setDownloadFileName() instead") +#endif void setPath(QString path); - #endif - bool isFinished() const; + #else + QT_DEPRECATED_X("Use downloadDirectory() and downloadFileName() instead") diff --git a/qtwebengine-everywhere-5.13.2-use-python2.patch b/qtwebengine-everywhere-5.15.5-use-python2.patch similarity index 39% rename from qtwebengine-everywhere-5.13.2-use-python2.patch rename to qtwebengine-everywhere-5.15.5-use-python2.patch index 91a17ae75e62c3c16a8709c6a1906b499aee7358..9626d27f48fb5e1c90ebe01f0a34ad442b39e0b3 100644 --- a/qtwebengine-everywhere-5.13.2-use-python2.patch +++ b/qtwebengine-everywhere-5.15.5-use-python2.patch @@ -1,3 +1,25 @@ +diff --git a/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py b/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py +index 8af373102..b551c0fe2 100644 +--- a/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py ++++ b/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py +@@ -83,7 +83,7 @@ def _MinifyJS(input_js): + + with tempfile.NamedTemporaryFile() as _: + args = [ +- 'python', ++ 'python2', + rjsmin_path + ] + p = subprocess.Popen(args, +@@ -203,7 +203,7 @@ def _MinifyCSS(css_text): + os.path.join(py_vulcanize_path, 'third_party', 'rcssmin', 'rcssmin.py')) + + with tempfile.NamedTemporaryFile() as _: +- rcssmin_args = ['python', rcssmin_path] ++ rcssmin_args = ['python2', rcssmin_path] + p = subprocess.Popen(rcssmin_args, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, diff --git a/src/webengine/module.pro b/src/webengine/module.pro index 49a1086b2..afc89d49e 100644 --- a/src/webengine/module.pro diff --git a/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch b/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch new file mode 100644 index 0000000000000000000000000000000000000000..c9e46861c395f3afc51549270f31c0f6769752a6 --- /dev/null +++ b/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch @@ -0,0 +1,24 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn.libpipewire-0.3 qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn.libpipewire-0.3 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn 2022-02-18 09:43:31.402923179 -0600 +@@ -202,7 +202,7 @@ if (is_linux || is_chromeos) { + + if (rtc_link_pipewire) { + pkg_config("pipewire") { +- packages = [ "libpipewire-0.2" ] ++ packages = [ "libpipewire-0.3" ] + } + } else { + # When libpipewire is not directly linked, use stubs to allow for dlopening of +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni.libpipewire-0.3 qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni.libpipewire-0.3 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni 2022-02-18 12:35:13.895009491 -0600 +@@ -115,7 +115,7 @@ declare_args() { + rtc_use_pipewire = is_desktop_linux && use_sysroot + + # Set this to link PipeWire directly instead of using the dlopen. +- rtc_link_pipewire = false ++ rtc_link_pipewire = true + + # Enable to use the Mozilla internal settings. + build_with_mozilla = false diff --git a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch b/qtwebengine-everywhere-src-5.10.0-linux-pri.patch deleted file mode 100644 index a4dc33431ebd1a4c8b929237dba9b4cda5466bfd..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri -index 56c18bd..cb17c7a 100644 ---- a/src/buildtools/config/linux.pri -+++ b/src/buildtools/config/linux.pri -@@ -176,3 +176,19 @@ host_build { - } - gn_args += use_glib=false - } -+ -+# yasm is only used on x86, and passing use_system_yasm makes the build fail on -+# other architectures (e.g., ARM), so make it conditional on the architecture -+contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") { -+ gn_args += use_system_yasm=true -+} -+ -+# link libpci instead of dlopening it, our Qt packaging depends on it anyway -+gn_args += linux_link_libpci=true -+ -+# run the unbundling script Chromium provides -+CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()" -+R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gn_files.py" -+R_G_F_PY_ARGS = "--system-libraries yasm" -+log("Running python2 $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}") -+!system("python2 $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed") diff --git a/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch b/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch deleted file mode 100644 index e035dffe7330275dfb7d6ec7a54e67f3e7877fb8..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp -index 1c8316430..a1c27d28f 100644 ---- a/src/core/web_engine_library_info.cpp -+++ b/src/core/web_engine_library_info.cpp -@@ -259,29 +259,12 @@ QString dictionariesPath() - - QString resourcesDataPath() - { -- static bool initialized = false; - static QString potentialResourcesPath = - #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD) - getResourcesPath(frameworkBundle()); - #else - QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources"); - #endif -- if (!initialized) { -- initialized = true; -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/qtwebengine_resources.pak"))) { -- qWarning("Qt WebEngine resources not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath); -- } -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/qtwebengine_resources.pak"))) { -- qWarning("Qt WebEngine resources not found at %s. Trying application directory...", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = QCoreApplication::applicationDirPath(); -- } -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/qtwebengine_resources.pak"))) { -- qWarning("Qt WebEngine resources not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = fallbackDir(); -- } -- } -- - return potentialResourcesPath; - } - } // namespace diff --git a/qtwebengine-everywhere-src-5.12.0-gn-bootstrap-verbose.patch b/qtwebengine-everywhere-src-5.12.0-gn-bootstrap-verbose.patch deleted file mode 100644 index ef1012fefa77976705f115cae20f778d3e7c098a..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.12.0-gn-bootstrap-verbose.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/buildtools/gn.pro b/src/buildtools/gn.pro -index b6bf9cfc4..30f92e6ac 100644 ---- a/src/buildtools/gn.pro -+++ b/src/buildtools/gn.pro -@@ -18,7 +18,7 @@ build_pass|!debug_and_release { - src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT") - gn_bootstrap = $$system_path($$absolute_path(gn/build/gen.py, $$src_3rd_party_dir)) - -- gn_gen_args = --no-last-commit-position --out-path $$out_path \ -+ gn_gen_args = --no-last-commit-position --verbose --out-path $$out_path \ - --cc \"$$which($$QMAKE_CC)\" --cxx \"$$which($$QMAKE_CXX)\" \ - --ld \"$$which($$QMAKE_LINK)\" - diff --git a/qtwebengine-everywhere-src-5.15.2-clean.tar.xz b/qtwebengine-everywhere-src-5.15.12-clean.tar.xz similarity index 83% rename from qtwebengine-everywhere-src-5.15.2-clean.tar.xz rename to qtwebengine-everywhere-src-5.15.12-clean.tar.xz index f24275f3a1f55152b17b008c7c949012523c28f3..e9dd877e13fc0786ec1a5bef8f173cf90e4e4997 100644 Binary files a/qtwebengine-everywhere-src-5.15.2-clean.tar.xz and b/qtwebengine-everywhere-src-5.15.12-clean.tar.xz differ diff --git a/qtwebengine-everywhere-src-5.15.5-TRUE.patch b/qtwebengine-everywhere-src-5.15.5-TRUE.patch new file mode 100644 index 0000000000000000000000000000000000000000..b61c9233de395eed8149c88c8b87623d087cd442 --- /dev/null +++ b/qtwebengine-everywhere-src-5.15.5-TRUE.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c +--- qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE 2021-05-28 07:05:45.000000000 -0500 ++++ qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c 2021-06-24 09:44:41.592468805 -0500 +@@ -2004,7 +2004,7 @@ xmlEncOutputChunk(xmlCharEncodingHandler + #ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, out, outlen, in, inlen, +- TRUE); ++ 1); + } + #endif /* LIBXML_ICU_ENABLED */ + else { diff --git a/qtwebengine-fix-build.patch b/qtwebengine-fix-build.patch new file mode 100644 index 0000000000000000000000000000000000000000..7cec0afd258feed548f7317917682c70d9863d6a --- /dev/null +++ b/qtwebengine-fix-build.patch @@ -0,0 +1,485 @@ +diff --git a/src/3rdparty/chromium/base/debug/profiler.h b/src/3rdparty/chromium/base/debug/profiler.h +index 1229e0623..c7ed55e70 100644 +--- a/src/3rdparty/chromium/base/debug/profiler.h ++++ b/src/3rdparty/chromium/base/debug/profiler.h +@@ -5,6 +5,7 @@ + #ifndef BASE_DEBUG_PROFILER_H_ + #define BASE_DEBUG_PROFILER_H_ + ++#include + #include + + #include +diff --git a/src/3rdparty/chromium/cc/trees/target_property.cc b/src/3rdparty/chromium/cc/trees/target_property.cc +index ed2062557..036c870b2 100644 +--- a/src/3rdparty/chromium/cc/trees/target_property.cc ++++ b/src/3rdparty/chromium/cc/trees/target_property.cc +@@ -4,6 +4,10 @@ + + #include "cc/trees/target_property.h" + ++#include ++ ++#include ++ + namespace cc { + + static_assert(TargetProperty::LAST_TARGET_PROPERTY < kMaxTargetPropertyIndex, +diff --git a/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h b/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h +index 3896bc6e7..b93843dc1 100644 +--- a/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h ++++ b/src/3rdparty/chromium/content/public/browser/browsing_data_remover_delegate.h +@@ -5,6 +5,7 @@ + #ifndef CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ + #define CONTENT_PUBLIC_BROWSER_BROWSING_DATA_REMOVER_DELEGATE_H_ + ++#include + #include + #include + #include "base/callback_forward.h" +diff --git a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +index 213b6301c..d77be3f14 100644 +--- a/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc ++++ b/src/3rdparty/chromium/device/base/synchronization/one_writer_seqlock.cc +@@ -4,6 +4,8 @@ + + #include "device/base/synchronization/one_writer_seqlock.h" + ++#include ++ + namespace device { + + OneWriterSeqLock::OneWriterSeqLock() : sequence_(0) {} +diff --git a/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h b/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h +index 0c27ae710..b64f82f75 100644 +--- a/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h ++++ b/src/3rdparty/chromium/device/bluetooth/public/cpp/bluetooth_uuid.h +@@ -5,6 +5,7 @@ + #ifndef DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ + #define DEVICE_BLUETOOTH_PUBLIC_CPP_BLUETOOTH_UUID_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/extensions/common/constants.h b/src/3rdparty/chromium/extensions/common/constants.h +index 747906a06..fec888a11 100644 +--- a/src/3rdparty/chromium/extensions/common/constants.h ++++ b/src/3rdparty/chromium/extensions/common/constants.h +@@ -11,6 +11,8 @@ + #include "components/version_info/channel.h" + #include "ui/base/layout.h" + ++#include ++ + namespace extensions { + + // Scheme we serve extension content from. +diff --git a/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h b/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h +index 83615b30c..8fa9fb1f6 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_enums.h +@@ -5,6 +5,8 @@ + #ifndef GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_ENUMS_H_ + #define GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_ENUMS_H_ + ++#include ++ + namespace gpu { + namespace webgpu { + +diff --git a/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_format.h b/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_format.h +index 286a41c43..25d2413df 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_format.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/common/webgpu_cmd_format.h +@@ -5,6 +5,7 @@ + #ifndef GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_FORMAT_H_ + #define GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_FORMAT_H_ + ++#include + #include + + #include "gpu/command_buffer/common/gl2_types.h" +diff --git a/src/3rdparty/chromium/gpu/command_buffer/service/shared_context_state.h b/src/3rdparty/chromium/gpu/command_buffer/service/shared_context_state.h +index bcba574d5..f4916bed7 100644 +--- a/src/3rdparty/chromium/gpu/command_buffer/service/shared_context_state.h ++++ b/src/3rdparty/chromium/gpu/command_buffer/service/shared_context_state.h +@@ -5,6 +5,7 @@ + #ifndef GPU_COMMAND_BUFFER_SERVICE_SHARED_CONTEXT_STATE_H_ + #define GPU_COMMAND_BUFFER_SERVICE_SHARED_CONTEXT_STATE_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/gpu/config/device_perf_info.h b/src/3rdparty/chromium/gpu/config/device_perf_info.h +index e33874ba3..824a207a2 100644 +--- a/src/3rdparty/chromium/gpu/config/device_perf_info.h ++++ b/src/3rdparty/chromium/gpu/config/device_perf_info.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_DEVICE_PERF_INFO_H_ + #define GPU_CONFIG_DEVICE_PERF_INFO_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/gpu/config/gpu_feature_info.h b/src/3rdparty/chromium/gpu/config/gpu_feature_info.h +index 027f1a5af..70759b2ae 100644 +--- a/src/3rdparty/chromium/gpu/config/gpu_feature_info.h ++++ b/src/3rdparty/chromium/gpu/config/gpu_feature_info.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_FEATURE_INFO_H_ + #define GPU_CONFIG_GPU_FEATURE_INFO_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/gpu/config/gpu_preferences.h b/src/3rdparty/chromium/gpu/config/gpu_preferences.h +index 6b8587151..e2bc6b90f 100644 +--- a/src/3rdparty/chromium/gpu/config/gpu_preferences.h ++++ b/src/3rdparty/chromium/gpu/config/gpu_preferences.h +@@ -5,6 +5,7 @@ + #ifndef GPU_CONFIG_GPU_PREFERENCES_H_ + #define GPU_CONFIG_GPU_PREFERENCES_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/gpu/config/gpu_util.h b/src/3rdparty/chromium/gpu/config/gpu_util.h +index b4d6dfb30..0dc300a9f 100644 +--- a/src/3rdparty/chromium/gpu/config/gpu_util.h ++++ b/src/3rdparty/chromium/gpu/config/gpu_util.h +@@ -5,6 +5,8 @@ + #ifndef GPU_CONFIG_GPU_UTIL_H_ + #define GPU_CONFIG_GPU_UTIL_H_ + ++#include ++ + #include "build/build_config.h" + #include "gpu/config/gpu_feature_info.h" + #include "gpu/gpu_export.h" +diff --git a/src/3rdparty/chromium/net/base/parse_number.h b/src/3rdparty/chromium/net/base/parse_number.h +index 0b4cfc1f8..55e9bfa8e 100644 +--- a/src/3rdparty/chromium/net/base/parse_number.h ++++ b/src/3rdparty/chromium/net/base/parse_number.h +@@ -9,6 +9,8 @@ + #include "base/strings/string_piece.h" + #include "net/base/net_export.h" + ++#include ++ + // This file contains utility functions for parsing numbers, in the context of + // network protocols. + // +diff --git a/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h b/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h +index 9e506b555..cfb03bfe2 100644 +--- a/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h ++++ b/src/3rdparty/chromium/net/cookies/cookie_inclusion_status.h +@@ -5,6 +5,7 @@ + #ifndef NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ + #define NET_COOKIES_COOKIE_INCLUSION_STATUS_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/pdf/document_attachment_info.h b/src/3rdparty/chromium/pdf/document_attachment_info.h +index 254398e62..22038e755 100644 +--- a/src/3rdparty/chromium/pdf/document_attachment_info.h ++++ b/src/3rdparty/chromium/pdf/document_attachment_info.h +@@ -7,6 +7,8 @@ + + #include "base/strings/string16.h" + ++#include ++ + namespace chrome_pdf { + + struct DocumentAttachmentInfo { +diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +index ac0b31a75..5d1c421d0 100644 +--- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h ++++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h +@@ -38,6 +38,10 @@ namespace pp { + /// As a further optimization, we can add support for this later. + class ThreadSafeThreadTraits { + public: ++ ++ typedef pp::Lock Lock; ++ typedef pp::AutoLock AutoLock; ++ + class RefCount { + public: + /// Default constructor. In debug mode, this checks that the object is being +@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits { + int32_t ref_; + }; + +- typedef pp::Lock Lock; +- typedef pp::AutoLock AutoLock; + }; + + /// The non-thread-safe version of thread traits. Using this class as the +diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h b/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +index a9b9e137d..6f1122c42 100644 +--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h ++++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +@@ -19,6 +19,7 @@ + #include + + #include ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h b/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h +index 9911546b9..48b660db3 100644 +--- a/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h ++++ b/src/3rdparty/chromium/third_party/angle/include/GLSLANG/ShaderVars.h +@@ -12,6 +12,7 @@ + + #include + #include ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/angle/src/common/angleutils.h b/src/3rdparty/chromium/third_party/angle/src/common/angleutils.h +index f669d7df3..8f391fdd7 100644 +--- a/src/3rdparty/chromium/third_party/angle/src/common/angleutils.h ++++ b/src/3rdparty/chromium/third_party/angle/src/common/angleutils.h +@@ -15,6 +15,7 @@ + # include "absl/container/flat_hash_map.h" + #endif // defined(ANGLE_USE_ABSEIL) + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h +index c7e4f2b37..e491a1f68 100644 +--- a/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h ++++ b/src/3rdparty/chromium/third_party/breakpad/breakpad/src/client/linux/handler/minidump_descriptor.h +@@ -33,6 +33,7 @@ + #include + #include + ++#include + #include + + #include "client/linux/handler/microdump_extra_info.h" +diff --git a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +index 8c8f4fe08..931782214 100644 +--- a/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc ++++ b/src/3rdparty/chromium/third_party/libgav1/src/src/utils/threadpool.cc +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h b/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h +index d2731dac7..46bc87ef9 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h ++++ b/src/3rdparty/chromium/third_party/pdfium/constants/annotation_flags.h +@@ -5,6 +5,8 @@ + #ifndef CONSTANTS_ANNOTATION_FLAGS_H_ + #define CONSTANTS_ANNOTATION_FLAGS_H_ + ++#include ++ + namespace pdfium { + namespace annotation_flags { + +diff --git a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h +index 1b4c53815..472042fab 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h ++++ b/src/3rdparty/chromium/third_party/perfetto/include/perfetto/ext/base/uuid.h +@@ -18,6 +18,7 @@ + #define INCLUDE_PERFETTO_EXT_BASE_UUID_H_ + + #include ++#include + #include + + #include "perfetto/ext/base/optional.h" +diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +index 74cc9583c..2a00b3b94 100644 +--- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h ++++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/proto_importer_module.h +@@ -21,6 +21,8 @@ + #include "perfetto/trace_processor/status.h" + #include "src/trace_processor/trace_blob_view.h" + ++#include ++ + namespace perfetto { + + namespace protos { +diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +index 503ed08ff..59c755b84 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +@@ -12,6 +12,10 @@ + #include + #include + ++#include ++#include ++#include ++ + static constexpr const char* gColorNames[] = { + "aliceblue", + "antiquewhite", +diff --git a/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h b/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h +index 3aa7e9df2..3cfc8d6a3 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h ++++ b/src/3rdparty/chromium/third_party/webrtc/call/rtp_demuxer.h +@@ -11,6 +11,7 @@ + #ifndef CALL_RTP_DEMUXER_H_ + #define CALL_RTP_DEMUXER_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h +index 7a936f23e..21951a1d2 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/third_party/base64/base64.h +@@ -12,6 +12,7 @@ + #ifndef RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ + #define RTC_BASE_THIRD_PARTY_BASE64_BASE64_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/ui/events/gesture_event_details.h b/src/3rdparty/chromium/ui/events/gesture_event_details.h +index d20416738..8dadab3d0 100644 +--- a/src/3rdparty/chromium/ui/events/gesture_event_details.h ++++ b/src/3rdparty/chromium/ui/events/gesture_event_details.h +@@ -5,6 +5,7 @@ + #ifndef UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_ + #define UI_EVENTS_GESTURE_DETECTION_GESTURE_EVENT_DETAILS_H_ + ++#include + #include + + #include "base/check_op.h" +diff --git a/src/3rdparty/chromium/ui/events/types/scroll_types.h b/src/3rdparty/chromium/ui/events/types/scroll_types.h +index 7ff15f0fc..136cebc09 100644 +--- a/src/3rdparty/chromium/ui/events/types/scroll_types.h ++++ b/src/3rdparty/chromium/ui/events/types/scroll_types.h +@@ -5,6 +5,8 @@ + #ifndef UI_EVENTS_TYPES_SCROLL_TYPES_H_ + #define UI_EVENTS_TYPES_SCROLL_TYPES_H_ + ++#include ++ + namespace ui { + + enum class ScrollGranularity : uint8_t { +diff --git a/src/3rdparty/chromium/ui/gl/gl_surface_glx.cc b/src/3rdparty/chromium/ui/gl/gl_surface_glx.cc +index 1d5527691..ef9d5ce13 100644 +--- a/src/3rdparty/chromium/ui/gl/gl_surface_glx.cc ++++ b/src/3rdparty/chromium/ui/gl/gl_surface_glx.cc +@@ -4,6 +4,7 @@ + + #include "ui/gl/gl_surface_glx.h" + ++#include + #include + + #include "base/bind.h" +diff --git a/src/3rdparty/chromium/ui/gl/gl_surface_glx.h b/src/3rdparty/chromium/ui/gl/gl_surface_glx.h +index ab612cd87..2178d8514 100644 +--- a/src/3rdparty/chromium/ui/gl/gl_surface_glx.h ++++ b/src/3rdparty/chromium/ui/gl/gl_surface_glx.h +@@ -5,6 +5,7 @@ + #ifndef UI_GL_GL_SURFACE_GLX_H_ + #define UI_GL_GL_SURFACE_GLX_H_ + ++#include + #include + + #include +diff --git a/src/3rdparty/chromium/v8/src/base/logging.h b/src/3rdparty/chromium/v8/src/base/logging.h +index fe39f9882..dbe130581 100644 +--- a/src/3rdparty/chromium/v8/src/base/logging.h ++++ b/src/3rdparty/chromium/v8/src/base/logging.h +@@ -5,6 +5,7 @@ + #ifndef V8_BASE_LOGGING_H_ + #define V8_BASE_LOGGING_H_ + ++#include + #include + #include + #include +diff --git a/src/3rdparty/chromium/v8/src/base/macros.h b/src/3rdparty/chromium/v8/src/base/macros.h +index 37cab78f0..4220eacbb 100644 +--- a/src/3rdparty/chromium/v8/src/base/macros.h ++++ b/src/3rdparty/chromium/v8/src/base/macros.h +@@ -5,6 +5,7 @@ + #ifndef V8_BASE_MACROS_H_ + #define V8_BASE_MACROS_H_ + ++#include + #include + #include + +diff --git a/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h b/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h +index c1d69c18f..eb33c6816 100644 +--- a/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h ++++ b/src/3rdparty/chromium/v8/src/inspector/v8-string-conversions.h +@@ -5,6 +5,7 @@ + #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ + #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ + ++#include + #include + + // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may +diff --git a/src/core/browsing_data_remover_delegate_qt.h b/src/core/browsing_data_remover_delegate_qt.h +index a10409f39..b9f5e59d8 100644 +--- a/src/core/browsing_data_remover_delegate_qt.h ++++ b/src/core/browsing_data_remover_delegate_qt.h +@@ -42,6 +42,8 @@ + + #include "content/public/browser/browsing_data_remover_delegate.h" + ++#include ++ + namespace QtWebEngineCore { + + class BrowsingDataRemoverDelegateQt : public content::BrowsingDataRemoverDelegate { +diff --git a/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml b/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml +index fb06e73..f20c11e 100644 +--- a/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml ++++ b/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml +@@ -89,7 +89,7 @@ OF THIS SOFTWARE. + + + +- ++ + + + +diff --git a/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h b/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h +index 9d2858177..d263f6703 100644 +--- a/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h ++++ b/src/3rdparty/chromium/extensions/browser/api/audio/audio_device_id_calculator.h +@@ -5,6 +5,7 @@ + #ifndef EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ + #define EXTENSIONS_BROWSER_API_AUDIO_AUDIO_DEVICE_ID_CALCULATOR_H_ + ++#include + #include + #include + diff --git a/qtwebengine-gcc11.patch b/qtwebengine-gcc11.patch deleted file mode 100644 index 7910b3906b59917a5e07ac3b0f4a3675bd383678..0000000000000000000000000000000000000000 --- a/qtwebengine-gcc11.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc -index fd651958f..1e8d0606c 100644 ---- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc -+++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc -@@ -14,9 +14,9 @@ - * limitations under the License. - */ - -+#include - #include "src/trace_processor/containers/string_pool.h" - --#include - - #include "perfetto/base/logging.h" - #include "perfetto/ext/base/utils.h" -diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc -index 80dcf5b24..b0037ec34 100644 ---- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc -+++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc -@@ -14,6 +14,7 @@ - * limitations under the License. - */ - -+#include - #include "src/trace_processor/db/column.h" - - #include "src/trace_processor/db/compare.h" -diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc -index fc9e41558..0e5bd92f4 100644 ---- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc -+++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/importers/proto/heap_graph_walker.cc -@@ -14,6 +14,8 @@ - * limitations under the License. - */ - -+#include -+ - #include "src/trace_processor/importers/proto/heap_graph_walker.h" - #include "perfetto/base/logging.h" - diff --git a/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch deleted file mode 100644 index 09803b29219cfda7335097df3b5b22f954a7140b..0000000000000000000000000000000000000000 --- a/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch +++ /dev/null @@ -1,97 +0,0 @@ -diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn b/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn -index 96a59c7c7..d5470f284 100644 ---- a/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn -@@ -208,12 +208,6 @@ if (current_cpu == "arm") { - ] - if (arm_optionally_use_neon) { - # Run-time NEON detection. -- deps = [ -- "//third_party/android_tools:cpu_features", -- ] -- -- # To get the __android_log_print routine -- libs = [ "log" ] - - # Detection routine - sources += [ "sp/src/arm/detect.c" ] -diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c -index 57bfe4089..94a3f7ddc 100644 ---- a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c -+++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c -@@ -9,13 +9,57 @@ - * - */ - --#include -- --#include "android/log.h" - #include "dl/sp/api/omxSP.h" - -+// For ArmCpuCaps() -+#include -+#include -+ -+// based on libvpx arm_cpudetect.c -+static int ArmCpuCaps(const char* cpuinfo_name) { -+ char cpuinfo_line[512]; -+ FILE* f = fopen(cpuinfo_name, "r"); -+ if (!f) { -+ // Assume Neon if /proc/cpuinfo is unavailable. -+ // This will occur for Chrome sandbox for Pepper or Render process. -+ return 1; -+ } -+ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) { -+ if (memcmp(cpuinfo_line, "Features", 8) == 0) { -+ char* p = strstr(cpuinfo_line, " neon"); -+ if (p && (p[5] == ' ' || p[5] == '\n')) { -+ fclose(f); -+ return 1; -+ } -+ // aarch64 uses asimd for Neon. -+ p = strstr(cpuinfo_line, " asimd"); -+ if (p && (p[6] == ' ' || p[6] == '\n')) { -+ fclose(f); -+ return 1; -+ } -+ } -+ } -+ fclose(f); -+ return 0; -+} -+ - int omxSP_HasArmNeon() { -- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; -+#if defined(__arm__) || defined(__aarch64__) -+// gcc -mfpu=neon defines __ARM_NEON__ -+// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon. -+// For Linux, /proc/cpuinfo can be tested but without that assume Neon. -+#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__) -+ return 1; -+// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon -+// flag in it. -+// So for aarch64, neon enabling is hard coded here. -+#elif defined(__aarch64__) -+ return 1; -+#else -+ // Linux arm parse text file for neon detect. -+ return ArmCpuCaps("/proc/cpuinfo"); -+#endif -+#endif // __arm__ - } - - static void SetFFTRoutines() { -@@ -24,13 +68,9 @@ static void SetFFTRoutines() { - * forward and inverse FFTs - */ - if (omxSP_HasArmNeon()) { -- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT", -- "Using NEON FFT"); - omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs; - omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs; - } else { -- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT", -- "Using non-NEON FFT"); - omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp; - omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp; - } diff --git a/qtwebengine-release.sh b/qtwebengine-release.sh new file mode 100755 index 0000000000000000000000000000000000000000..a5ce2474388a179dce5f8998c5dbab92811ce313 --- /dev/null +++ b/qtwebengine-release.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -x +VERSION=5.15.12 +CHROMIUMHASH=`wget https://code.qt.io/cgit/qt/qtwebengine.git/tree/src/3rdparty?h=$VERSION -q --content-on-error -O - | grep "Bad object name: " | sed 's/^.*Bad object name: \([0-9a-f]\{40\}\).*$/\1/g'` +rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-src-$VERSION +wget https://github.com/qt/qtwebengine/archive/$VERSION.tar.gz -O qtwebengine-$VERSION.tar.gz || exit $? +tar xzf qtwebengine-$VERSION.tar.gz || exit $? +wget https://github.com/qt/qtwebengine-chromium/archive/$CHROMIUMHASH.tar.gz -O qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +tar xzf qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +mv qtwebengine-$VERSION qtwebengine-everywhere-src-$VERSION || exit $? +(cd qtwebengine-everywhere-src-$VERSION ; syncqt.pl -version $VERSION ) || exit $? +rmdir qtwebengine-everywhere-src-$VERSION/src/3rdparty || exit $? +mv qtwebengine-chromium-$CHROMIUMHASH qtwebengine-everywhere-src-$VERSION/src/3rdparty || exit $? +XZ_OPT="-9 -T2" tar cJf qtwebengine-everywhere-src-$VERSION.tar.xz qtwebengine-everywhere-src-$VERSION || exit $? +rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-src-$VERSION diff --git a/qtwebengine-skia-missing-includes.patch b/qtwebengine-skia-missing-includes.patch new file mode 100644 index 0000000000000000000000000000000000000000..8402a73bb480b40b54f45c5b3f22b51a4f047f77 --- /dev/null +++ b/qtwebengine-skia-missing-includes.patch @@ -0,0 +1,15 @@ +diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +index 7260365..503ed08 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +@@ -8,6 +8,10 @@ + + #include "include/utils/SkParse.h" + ++#include ++#include ++#include ++ + static constexpr const char* gColorNames[] = { + "aliceblue", + "antiquewhite",