author | Antonio Rojas
<arojas@archlinux.org> 2021-10-29 12:28:44 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2021-10-29 12:28:44 UTC |
parent | 23df0d9eb2577262417722384c4b49a74e34a926 |
PKGBUILD | +2 | -13 |
chromium-harfbuzz-3.0.0.patch | +0 | -20 |
qt5-webengine-glibc-2.33.patch | +0 | -144 |
skia-harfbuzz-3.0.0.patch | +0 | -100 |
diff --git a/PKGBUILD b/PKGBUILD index a1a0e30..c4d44e0 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -2,9 +2,9 @@ # Contributor: Andrea Scarpino <andrea@archlinux.org> pkgname=qt5-webengine -_qtver=5.15.6 +_qtver=5.15.7 pkgver=${_qtver/-/} -pkgrel=5 +pkgrel=1 arch=('x86_64') url='https://www.qt.io' license=('LGPL3' 'LGPL2.1' 'BSD') @@ -18,17 +18,11 @@ _pkgfqn=qtwebengine source=(git+https://code.qt.io/qt/qtwebengine.git#tag=v${pkgver}-lts git+https://code.qt.io/qt/qtwebengine-chromium.git git+https://chromium.googlesource.com/catapult#commit=5eedfe23148a234211ba477f76fc2ea2e8529189 - chromium-harfbuzz-3.0.0.patch - skia-harfbuzz-3.0.0.patch - qt5-webengine-glibc-2.33.patch qt5-webengine-python3.patch qt5-webengine-chromium-python3.patch) sha256sums=('SKIP' 'SKIP' 'SKIP' - '7ce947944a139e66774dfc7249bf7c3069f07f83a0f1b2c1a1b14287a7e15928' - 'dae11dec5088eb1b14045d8c9862801a342609c15701d7c371e1caccf46e1ffd' - '2294e5390c869963fc58f7bf1ee0a254a3f7fce3ed00c04e34a5f03e2b31b624' '45ccf4ff981a26656e5105259f71a3ce386d4a7112cbf09e41cb61615b355435' '8d0327615c6b6a340122640a9ddeb56be185621297a4ead8da4211e37feeaa75') @@ -41,11 +35,6 @@ prepare() { git submodule set-branch --branch 87-based src/3rdparty git submodule update - # Fix build with harfbuzz 3.0.0 - patch -p1 -d src/3rdparty/chromium -i "$srcdir"/chromium-harfbuzz-3.0.0.patch - patch -p1 -d src/3rdparty/chromium/third_party/skia -i "$srcdir"/skia-harfbuzz-3.0.0.patch - - patch -p1 -i "$srcdir"/qt5-webengine-glibc-2.33.patch # Fix text rendering when building with glibc 2.33 patch -p1 -i "$srcdir"/qt5-webengine-python3.patch # Fix build with Python 3 patch -p1 -d src/3rdparty -i "$srcdir"/qt5-webengine-chromium-python3.patch diff --git a/chromium-harfbuzz-3.0.0.patch b/chromium-harfbuzz-3.0.0.patch deleted file mode 100644 index c772433..0000000 --- a/chromium-harfbuzz-3.0.0.patch +++ /dev/null @@ -1,20 +0,0 @@ -# https://github.com/chromium/chromium/commit/b289f6f3fcbc - -diff --git a/components/paint_preview/common/subset_font.cc b/components/paint_preview/common/subset_font.cc -index 8ff0540d9a..20a7d37474 100644 ---- a/components/paint_preview/common/subset_font.cc -+++ b/components/paint_preview/common/subset_font.cc -@@ -72,9 +72,11 @@ sk_sp<SkData> SubsetFont(SkTypeface* typeface, const GlyphUsage& usage) { - hb_set_t* glyphs = - hb_subset_input_glyph_set(input.get()); // Owned by |input|. - usage.ForEach(base::BindRepeating(&AddGlyphs, base::Unretained(glyphs))); -- hb_subset_input_set_retain_gids(input.get(), true); -+ hb_subset_input_set_flags(input.get(), HB_SUBSET_FLAGS_RETAIN_GIDS); - -- HbScoped<hb_face_t> subset_face(hb_subset(face.get(), input.get())); -+ HbScoped<hb_face_t> subset_face(hb_subset_or_fail(face.get(), input.get())); -+ if (!subset_face) -+ return nullptr; - HbScoped<hb_blob_t> subset_blob(hb_face_reference_blob(subset_face.get())); - if (!subset_blob) - return nullptr; diff --git a/qt5-webengine-glibc-2.33.patch b/qt5-webengine-glibc-2.33.patch deleted file mode 100644 index 3a0ba3b..0000000 --- a/qt5-webengine-glibc-2.33.patch +++ /dev/null @@ -1,144 +0,0 @@ -# Patch made by Kevin Kofler <Kevin@tigcc.ticalc.org> -# https://bugzilla.redhat.com/show_bug.cgi?id=1904652 - -diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc ---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2020-11-07 02:22:36.000000000 +0100 -+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-20 02:14:53.066223906 +0100 -@@ -257,6 +257,18 @@ - return RestrictKillTarget(current_pid, sysno); - } - -+#if defined(__NR_newfstatat) -+ if (sysno == __NR_newfstatat) { -+ return RewriteFstatatSIGSYS(); -+ } -+#endif -+ -+#if defined(__NR_fstatat64) -+ if (sysno == __NR_fstatat64) { -+ return RewriteFstatatSIGSYS(); -+ } -+#endif -+ - if (SyscallSets::IsFileSystem(sysno) || - SyscallSets::IsCurrentDirectory(sysno)) { - return Error(fs_denied_errno); -diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc ---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2020-11-07 02:22:36.000000000 +0100 -+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-22 19:02:55.651668257 +0100 -@@ -6,6 +6,8 @@ - - #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" - -+#include <errno.h> -+#include <fcntl.h> - #include <stddef.h> - #include <stdint.h> - #include <string.h> -@@ -355,6 +357,35 @@ - return -ENOSYS; - } - -+intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, -+ void* aux) { -+ switch (args.nr) { -+#if defined(__NR_newfstatat) -+ case __NR_newfstatat: -+#endif -+#if defined(__NR_fstatat64) -+ case __NR_fstatat64: -+#endif -+#if defined(__NR_newfstatat) || defined(__NR_fstatat64) -+ if (*reinterpret_cast<const char *>(args.args[1]) == '\0' -+ && args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) { -+ return sandbox::sys_fstat64(static_cast<int>(args.args[0]), -+ reinterpret_cast<struct stat64 *>(args.args[2])); -+ } else { -+ errno = EACCES; -+ return -1; -+ } -+ break; -+#endif -+ } -+ -+ CrashSIGSYS_Handler(args, aux); -+ -+ // Should never be reached. -+ RAW_CHECK(false); -+ return -ENOSYS; -+} -+ - bpf_dsl::ResultExpr CrashSIGSYS() { - return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL); - } -@@ -387,6 +418,10 @@ - return bpf_dsl::Trap(SIGSYSSchedHandler, NULL); - } - -+bpf_dsl::ResultExpr RewriteFstatatSIGSYS() { -+ return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL); -+} -+ - void AllocateCrashKeys() { - #if !defined(OS_NACL_NONSFI) - if (seccomp_crash_key) -diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h ---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2020-11-07 02:22:36.000000000 +0100 -+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-20 02:11:04.583714199 +0100 -@@ -62,6 +62,10 @@ - // sched_setparam(), sched_setscheduler() - SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args, - void* aux); -+// If the fstatat syscall is actually a disguised fstat, calls the regular fstat -+// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler. -+SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, -+ void* aux); - - // Variants of the above functions for use with bpf_dsl. - SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS(); -@@ -72,6 +76,7 @@ - SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex(); - SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace(); - SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS(); -+SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS(); - - // Allocates a crash key so that Seccomp information can be recorded. - void AllocateCrashKeys(); -diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc ---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2020-11-07 02:22:36.000000000 +0100 -+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2021-01-20 02:41:12.033133269 +0100 -@@ -261,4 +261,13 @@ - - #endif // defined(MEMORY_SANITIZER) - -+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf) -+{ -+#if defined(__NR_fstat64) -+ return syscall(__NR_fstat64, fd, buf); -+#else -+ return syscall(__NR_fstat, fd, buf); -+#endif -+} -+ - } // namespace sandbox -diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h ---- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2020-11-07 02:22:36.000000000 +0100 -+++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2021-01-20 02:40:26.499827829 +0100 -@@ -17,6 +17,7 @@ - struct rlimit64; - struct cap_hdr; - struct cap_data; -+struct stat64; - - namespace sandbox { - -@@ -84,6 +85,9 @@ - const struct sigaction* act, - struct sigaction* oldact); - -+// Recent glibc rewrites fstat to fstatat. -+SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf); -+ - } // namespace sandbox - - #endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_ diff --git a/skia-harfbuzz-3.0.0.patch b/skia-harfbuzz-3.0.0.patch deleted file mode 100644 index a217691..0000000 --- a/skia-harfbuzz-3.0.0.patch +++ /dev/null @@ -1,100 +0,0 @@ -# Minimal diff for harfbuzz 3.0.0 support; based on: -# https://github.com/google/skia/commit/66684b17b382 -# https://github.com/google/skia/commit/51d83abcd24a - -diff --git a/gn/skia.gni b/gn/skia.gni -index d98fdc19ee..199335d5c4 100644 ---- a/gn/skia.gni -+++ b/gn/skia.gni -@@ -34,8 +34,6 @@ declare_args() { - skia_include_multiframe_procs = false - skia_lex = false - skia_libgifcodec_path = "third_party/externals/libgifcodec" -- skia_pdf_subset_harfbuzz = -- false # TODO: set skia_pdf_subset_harfbuzz to skia_use_harfbuzz. - skia_qt_path = getenv("QT_PATH") - skia_skqp_global_error_tolerance = 0 - skia_tools_require_resources = false -@@ -99,6 +97,10 @@ declare_args() { - skia_use_libfuzzer_defaults = true - } - -+declare_args() { -+ skia_pdf_subset_harfbuzz = skia_use_harfbuzz -+} -+ - declare_args() { - skia_compile_sksl_tests = skia_compile_processors - skia_enable_fontmgr_android = skia_use_expat && skia_use_freetype -diff --git a/src/pdf/SkPDFSubsetFont.cpp b/src/pdf/SkPDFSubsetFont.cpp -index 81c37eef3a..2340a7937b 100644 ---- a/src/pdf/SkPDFSubsetFont.cpp -+++ b/src/pdf/SkPDFSubsetFont.cpp -@@ -49,6 +49,37 @@ static sk_sp<SkData> to_data(HBBlob blob) { - blob.release()); - } - -+template<typename...> using void_t = void; -+template<typename T, typename = void> -+struct SkPDFHarfBuzzSubset { -+ // This is the HarfBuzz 3.0 interface. -+ // hb_subset_flags_t does not exist in 2.0. It isn't dependent on T, so inline the value of -+ // HB_SUBSET_FLAGS_RETAIN_GIDS until 2.0 is no longer supported. -+ static HBFace Make(T input, hb_face_t* face) { -+ // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY. -+ // If it isn't known if a font is 'tricky', retain the hints. -+ hb_subset_input_set_flags(input, 2/*HB_SUBSET_FLAGS_RETAIN_GIDS*/); -+ return HBFace(hb_subset_or_fail(face, input)); -+ } -+}; -+template<typename T> -+struct SkPDFHarfBuzzSubset<T, void_t< -+ decltype(hb_subset_input_set_retain_gids(std::declval<T>(), std::declval<bool>())), -+ decltype(hb_subset_input_set_drop_hints(std::declval<T>(), std::declval<bool>())), -+ decltype(hb_subset(std::declval<hb_face_t*>(), std::declval<T>())) -+ >> -+{ -+ // This is the HarfBuzz 2.0 (non-public) interface, used if it exists. -+ // This code should be removed as soon as all users are migrated to the newer API. -+ static HBFace Make(T input, hb_face_t* face) { -+ hb_subset_input_set_retain_gids(input, true); -+ // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY. -+ // If it isn't known if a font is 'tricky', retain the hints. -+ hb_subset_input_set_drop_hints(input, false); -+ return HBFace(hb_subset(face, input)); -+ } -+}; -+ - static sk_sp<SkData> subset_harfbuzz(sk_sp<SkData> fontData, - const SkPDFGlyphUse& glyphUsage, - int ttcIndex) { -@@ -71,11 +102,10 @@ static sk_sp<SkData> subset_harfbuzz(sk_sp<SkData> fontData, - hb_set_t* glyphs = hb_subset_input_glyph_set(input.get()); - glyphUsage.getSetValues([&glyphs](unsigned gid) { hb_set_add(glyphs, gid);}); - -- hb_subset_input_set_retain_gids(input.get(), true); -- // TODO: When possible, check if a font is 'tricky' with FT_IS_TRICKY. -- // If it isn't known if a font is 'tricky', retain the hints. -- hb_subset_input_set_drop_hints(input.get(), false); -- HBFace subset(hb_subset(face.get(), input.get())); -+ HBFace subset = SkPDFHarfBuzzSubset<hb_subset_input_t*>::Make(input.get(), face.get()); -+ if (!subset) { -+ return nullptr; -+ } - HBBlob result(hb_face_reference_blob(subset.get())); - return to_data(std::move(result)); - } -diff --git a/third_party/harfbuzz/BUILD.gn b/third_party/harfbuzz/BUILD.gn -index 173830de62..4156607ef9 100644 ---- a/third_party/harfbuzz/BUILD.gn -+++ b/third_party/harfbuzz/BUILD.gn -@@ -14,6 +14,9 @@ if (skia_use_system_harfbuzz) { - system("harfbuzz") { - include_dirs = [ "/usr/include/harfbuzz" ] - libs = [ "harfbuzz" ] -+ if (skia_pdf_subset_harfbuzz) { -+ libs += [ "harfbuzz-subset" ] -+ } - } - } else { - third_party("harfbuzz") {