From 3c3b356a62beef9feb5aedfa67f93ef38509b139 Mon Sep 17 00:00:00 2001 From: Violet Purcell Date: Sat, 17 Jun 2023 21:05:29 +0000 Subject: dev-qt/qtwebengine: Add qt6, bump qt5 version Signed-off-by: Violet Purcell Closes: https://github.com/gentoo/musl/pull/481 Signed-off-by: Sam James --- dev-qt/qtwebengine/Manifest | 6 +- .../qtwebengine-5.15.10_p20230505-clang-16.patch | 10 + .../qtwebengine-5.15.10_p20230505-musl-lfs64.patch | 37 +++ ...qtwebengine-5.15.2-disable-fatal-warnings.patch | 12 - ...ine-5.15.2_p20210224-chromium-87-v8-icu68.patch | 192 ------------- .../qtwebengine-5.15.2_p20210224-disable-git.patch | 15 -- ...gine-5.15.2_p20211015-pdfium-system-lcms2.patch | 79 ------ .../qtwebengine-5.15.3_p20220329-clang14.patch | 42 --- .../qtwebengine-5.15.3_p20220406-ffmpeg5.patch | 169 ------------ ...webengine-5.15.3_p20220406-gcc12-includes.patch | 32 --- .../qtwebengine-5.15.3_p20220505-extra-gn.patch | 10 - ...gine-5.15.5_p20220618-fixup-CVE-2022-0796.patch | 48 ---- .../files/qtwebengine-6.5.1-clang-libc++.patch | 11 + ...bengine-6.5.1-musl-canonicalize-file-name.patch | 16 ++ .../files/qtwebengine-6.5.1-musl-close.patch | 33 +++ .../files/qtwebengine-6.5.1-musl-crashpad.patch | 13 + ...gine-6.5.1-musl-default-pthread-stacksize.patch | 23 ++ ...twebengine-6.5.1-musl-disable-glibc-check.patch | 21 ++ ...qtwebengine-6.5.1-musl-fix-narrowing-cast.patch | 44 +++ .../files/qtwebengine-6.5.1-musl-lfs64.patch | 37 +++ .../files/qtwebengine-6.5.1-musl-mallinfo.patch | 75 ++++++ .../qtwebengine-6.5.1-musl-missing-includes.patch | 22 ++ .../files/qtwebengine-6.5.1-musl-no-execinfo.patch | 98 +++++++ ...qtwebengine-6.5.1-musl-remove-decls-usage.patch | 122 +++++++++ .../files/qtwebengine-6.5.1-musl-resolve.patch | 66 +++++ .../files/qtwebengine-6.5.1-musl-sandbox.patch | 97 +++++++ .../files/qtwebengine-6.5.1-musl-stat.patch | 14 + .../files/qtwebengine-6.5.1-musl-systypes.patch | 11 + ...qtwebengine-6.5.1-musl-temp-retry-failure.patch | 21 ++ .../qtwebengine-6.5.1-musl-wtf-stacksize.patch | 22 ++ ...ine-6.5.1-normalise-clipboard-permissions.patch | 99 +++++++ dev-qt/qtwebengine/metadata.xml | 2 - .../qtwebengine-5.15.10_p20230505.ebuild | 289 ++++++++++++++++++++ .../qtwebengine-5.15.5_p20220618.ebuild | 299 --------------------- .../qtwebengine-5.15.9_p20230505.ebuild | 289 ++++++++++++++++++++ dev-qt/qtwebengine/qtwebengine-6.5.1.ebuild | 275 +++++++++++++++++++ 36 files changed, 1748 insertions(+), 903 deletions(-) create mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-clang-16.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-musl-lfs64.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.2-disable-fatal-warnings.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-disable-git.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20211015-pdfium-system-lcms2.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-gcc12-includes.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220505-extra-gn.patch delete mode 100644 dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fixup-CVE-2022-0796.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-clang-libc++.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-canonicalize-file-name.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-close.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-crashpad.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-default-pthread-stacksize.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-disable-glibc-check.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-fix-narrowing-cast.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-lfs64.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-mallinfo.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-missing-includes.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-no-execinfo.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-remove-decls-usage.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-resolve.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-sandbox.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-stat.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-systypes.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-temp-retry-failure.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-wtf-stacksize.patch create mode 100644 dev-qt/qtwebengine/files/qtwebengine-6.5.1-normalise-clipboard-permissions.patch create mode 100644 dev-qt/qtwebengine/qtwebengine-5.15.10_p20230505.ebuild delete mode 100644 dev-qt/qtwebengine/qtwebengine-5.15.5_p20220618.ebuild create mode 100644 dev-qt/qtwebengine/qtwebengine-5.15.9_p20230505.ebuild create mode 100644 dev-qt/qtwebengine/qtwebengine-6.5.1.ebuild diff --git a/dev-qt/qtwebengine/Manifest b/dev-qt/qtwebengine/Manifest index 282326e1..6cbfc321 100644 --- a/dev-qt/qtwebengine/Manifest +++ b/dev-qt/qtwebengine/Manifest @@ -1,4 +1,4 @@ DIST qtwebengine-5.15.2-r1-chromium87-ppc64le.tar.xz 28784 BLAKE2B aa101d14446f3282fda8932cc75a249d88b79319f0886d95777292776d94ac5f4fc114c3893b2801fbba6abb14f381172bb14b15b5ffef12413db3a16e4d1ca6 SHA512 3324e0076eb18e2ae2248428d2730cfb3413761514b2bb57e25b8db79248aaaa8098d9f7cebfa08f1a3b39b1d0a382aafed75c5ae8273918909335957921305e -DIST qtwebengine-5.15.2_p20211019-jumbo-build.patch.bz2 2930 BLAKE2B fca1d1406874d04eafb64bb4d8730512a6307ba44fb99d76f428ca1bd4a303758e0c3bd8f92a59f7bcf62e5b767c5a8ed239028bdb74ad7a8b62abf88d38c101 SHA512 61cbfbe4ff340b75ea8d356e031e932ac03fe65dd009999ff897ca4b0185d1d989490daf75ffeaaabb3e92c870c11c7ff8ad2cd6372f5363b3d774b8ecca6d89 -DIST qtwebengine-5.15.3_p20220406-patchset.tar.xz 35480 BLAKE2B ce6aeebbb3255196611130d04ee7a3907ba45d6d2a283f2433e2176cf67e473e74137b180de0a9998762cc54439bb06825815e81e9f95f9413ce2956ac9308b7 SHA512 47e29a1429dce2db324929af91c8ef8421c75ae48f5a491db71b434f8017a5b1e7475e9938989e331e8e012220852848565242e09747892e1a8a8d3ab7386840 -DIST qtwebengine-5.15.5_p20220618.tar.xz 320131236 BLAKE2B 842322c94737cdf647277ccf226c0d015ac0b362af54c4298cbad6b4494aa4ef0e73830577fb391be31c91b4331b85f407ec58641897a7cc7237e7623043577d SHA512 b1bab7aa5edc7f7b9d4f8338a05dbbd55ae6e0312e1a7e6061895bd7a98c67780127c20db1dbbc81664bf483a5b8f7ed887cedd1baaa1a0259e28fd4b13d6944 +DIST qtwebengine-5.15.8_p20230313-patchset.tar.xz 45904 BLAKE2B 9f58b9808fd445a06e6a2cd6d5f7bc9782bd6de13138fdebc9e81bd9f69e7ae673a71bd3ed6b011a47e84cc64b5b703a7cfc8d5f740eaaa663da1db8ef9ef05b SHA512 21b0b853358260fa1bdc96c97c5b2af7007c744d10abeebf9f0e708a0cd7dece583d86c0554a4e327a0d615bb403b0d328acaa6622b50d7a8059bc0802edbcec +DIST qtwebengine-5.15.9_p20230505.tar.xz 298713240 BLAKE2B 835e93a0b33e7294d72571c9031524a0e3002100e36433501cc83bac91646b788c1030ee9ce90edce39c6ee2ee61a1d697e021b6346804d3be0f0b930e6084d0 SHA512 61d16399a7d8f5c135c5c097c2dcb7ebeccfe7e31769e950443ffa8178f55ad22d90307b7bd2b2ebdcb3ee0dd2064266159c27da4fc5b35ddac346ca9f336cc1 +DIST qtwebengine-everywhere-src-6.5.1.tar.xz 412377436 BLAKE2B 1ff179daf1433246b931558f52f1cf193eff4a1d646e6f6037a40fe85fa28cf944b7f361fd68cb01b1247680d376762c2c5317be125f5b24cc08e4bbfa6f0def SHA512 68aae60184af6189b70207a458458a3dab23d49891f12ac57ede01a0eb43c403378e7d85baa074d3b12120624eff78d674cbd9112f7d1be84c33ce9bf95ca428 diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-clang-16.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-clang-16.patch new file mode 100644 index 00000000..d6460de7 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-clang-16.patch @@ -0,0 +1,10 @@ +--- qtwebengine-5.15.8_p20230313-orig/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2022-05-13 03:17:44.000000000 +1000 ++++ qtwebengine-5.15.8_p20230313/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2023-04-06 18:09:53.528885245 +1000 +@@ -318,6 +318,7 @@ + "-Wno-parentheses-equality", + "-Wno-tautological-compare", + "-Wno-thread-safety-attributes", ++ "-Wno-enum-constexpr-conversion" + ] + } + diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-musl-lfs64.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-musl-lfs64.patch new file mode 100644 index 00000000..ba796896 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.10_p20230505-musl-lfs64.patch @@ -0,0 +1,37 @@ +--- a/src/3rdparty/gn/base/files/file.h ++++ b/src/3rdparty/gn/base/files/file.h +@@ -26,7 +26,7 @@ namespace base { + defined(OS_ANDROID) && __ANDROID_API__ < 21 + typedef struct stat stat_wrapper_t; + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) +-typedef struct stat64 stat_wrapper_t; ++typedef struct stat stat_wrapper_t; + #endif + + // Thin wrapper around an OS-level file. +--- a/src/3rdparty/gn/base/files/file_posix.cc ++++ b/src/3rdparty/gn/base/files/file_posix.cc +@@ -32,7 +32,7 @@ int CallFstat(int fd, stat_wrapper_t* sb + } + #else + int CallFstat(int fd, stat_wrapper_t* sb) { +- return fstat64(fd, sb); ++ return fstat(fd, sb); + } + #endif + +--- a/src/3rdparty/gn/base/files/file_util_posix.cc ++++ b/src/3rdparty/gn/base/files/file_util_posix.cc +@@ -70,10 +70,10 @@ int CallLstat(const char* path, stat_wra + } + #else + int CallStat(const char* path, stat_wrapper_t* sb) { +- return stat64(path, sb); ++ return stat(path, sb); + } + int CallLstat(const char* path, stat_wrapper_t* sb) { +- return lstat64(path, sb); ++ return lstat(path, sb); + } + #endif + diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.2-disable-fatal-warnings.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.2-disable-fatal-warnings.patch deleted file mode 100644 index b0f5f3d3..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.2-disable-fatal-warnings.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/buildtools/config/common.pri b/src/buildtools/config/common.pri -index cf990c79..910a88ca 100644 ---- a/src/buildtools/config/common.pri -+++ b/src/buildtools/config/common.pri -@@ -26,6 +26,7 @@ gn_args += \ - skia_use_dawn=false \ - toolkit_views=false \ - treat_warnings_as_errors=false \ -+ fatal_linker_warnings=false \ - use_allocator_shim=false \ - use_allocator=\"none\" \ - use_custom_libcxx=false \ diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch deleted file mode 100644 index a6856975..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-chromium-87-v8-icu68.patch +++ /dev/null @@ -1,192 +0,0 @@ -From b0a7f5691113534c2cf771f2dd3cece5e93bc7d4 Mon Sep 17 00:00:00 2001 -From: Frank Tang -Date: Tue, 03 Nov 2020 23:20:37 -0800 -Subject: [PATCH] Update to ICU68-1 - -ICU68-1 change the output skeleton format. So we need to change -resolvedOptions code for 68 migration. - -Chromium roll -https://chromium-review.googlesource.com/c/chromium/src/+/2474093 - -Bug: v8:10945 -Change-Id: I3b2c7fbe8abb22df8fa51287c498ca3245b8c55b -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2477431 -Commit-Queue: Frank Tang -Reviewed-by: Jakob Kummerow -Reviewed-by: Shu-yu Guo -Cr-Commit-Position: refs/heads/master@{#70972} - -(ported to work with CurrencySignString(Isolate* isolate, - Handle UnitDisplayString(Isolate* isolate, - const icu::UnicodeString& skeleton) { - // Ex: skeleton as -- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-full-name" -+ // =ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-full-name" - if (skeleton.indexOf("unit-width-full-name") >= 0) { - return ReadOnlyRoots(isolate).long_string_handle(); - } - // Ex: skeleton as -- // "measure-unit/length-meter .### rounding-mode-half-up unit-width-narrow". -+ // =ICU-68.1: "unit/length-meter .### rounding-mode-half-up unit-width-narrow". - if (skeleton.indexOf("unit-width-narrow") >= 0) { - return ReadOnlyRoots(isolate).narrow_string_handle(); - } - // Ex: skeleton as -- // "measure-unit/length-foot .### rounding-mode-half-up" -+ // =ICU-68.1: "unit/length-foot .### rounding-mode-half-up" - return ReadOnlyRoots(isolate).short_string_handle(); - } - -@@ -422,7 +425,8 @@ Notation NotationFromSkeleton(const icu::UnicodeString& skeleton) { - return Notation::COMPACT; - } - // Ex: skeleton as -- // "measure-unit/length-foot .### rounding-mode-half-up" -+ // =ICU-68.1: "unit/length-foot .### rounding-mode-half-up" - return Notation::STANDARD; - } - -@@ -562,14 +566,23 @@ namespace { - - // Ex: percent .### rounding-mode-half-up - // Special case for "percent" --// Ex: "measure-unit/length-kilometer per-measure-unit/duration-hour .### --// rounding-mode-half-up" should return "kilometer-per-unit". --// Ex: "measure-unit/duration-year .### rounding-mode-half-up" should return --// "year". -+// =ICU-68.1: -+// Ex: "unit/milliliter-per-acre .### rounding-mode-half-up" -+// should return "milliliter-per-acre". -+// Ex: "unit/year .### rounding-mode-half-up" should return -+// "year". - std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { - std::string str; - str = skeleton.toUTF8String(str); -+#if U_ICU_VERSION_MAJOR_NUM < 68 - std::string search("measure-unit/"); -+#else -+ std::string search("unit/"); -+#endif - size_t begin = str.find(search); - if (begin == str.npos) { - // Special case for "percent". -@@ -578,20 +591,41 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { - } - return ""; - } -+#if U_ICU_VERSION_MAJOR_NUM < 68 - // Skip the type (ex: "length"). - // "measure-unit/length-kilometer per-measure-unit/duration-hour" - // b - begin = str.find("-", begin + search.size()); -+#else -+ // Ex: -+ // "unit/acre .### rounding-mode-half-up" -+ // b -+ // Ex: -+ // "unit/milliliter-per-acre .### rounding-mode-half-up" -+ // b -+ begin += search.size(); -+#endif - if (begin == str.npos) { - return ""; - } -+#if U_ICU_VERSION_MAJOR_NUM < 68 - begin++; // Skip the '-'. -+#endif - // Find the end of the subtype. - size_t end = str.find(" ", begin); -- // "measure-unit/length-kilometer per-measure-unit/duration-hour" -- // b e -+ // =ICU-68.1: -+ // Ex: -+ // "unit/acre .### rounding-mode-half-up" -+ // b e -+ // Ex: -+ // "unit/milliliter-per-acre .### rounding-mode-half-up" -+ // b e - if (end == str.npos) { - end = str.size(); -+#if U_ICU_VERSION_MAJOR_NUM < 68 - return str.substr(begin, end - begin); - } - // "measure-unit/length-kilometer per-measure-unit/duration-hour" -@@ -625,17 +659,36 @@ std::string UnitFromSkeleton(const icu::UnicodeString& skeleton) { - // "measure-unit/length-kilometer per-measure-unit/duration-hour" - // [result ] b e - return result + "-per-" + str.substr(begin, end - begin); -+#else -+ } -+ return str.substr(begin, end - begin); -+#endif - } - - Style StyleFromSkeleton(const icu::UnicodeString& skeleton) { - if (skeleton.indexOf("currency/") >= 0) { - return Style::CURRENCY; - } -+#if U_ICU_VERSION_MAJOR_NUM < 68 - if (skeleton.indexOf("measure-unit/") >= 0) { - if (skeleton.indexOf("scale/100") >= 0 && - skeleton.indexOf("measure-unit/concentr-percent") >= 0) { -+#else -+ if (skeleton.indexOf("percent") >= 0) { -+ // percent precision-integer rounding-mode-half-up scale/100 -+ if (skeleton.indexOf("scale/100") >= 0) { -+#endif - return Style::PERCENT; -+#if U_ICU_VERSION_MAJOR_NUM >= 68 -+ } else { -+ return Style::UNIT; -+#endif - } -+#if U_ICU_VERSION_MAJOR_NUM >= 68 -+ } -+ // Before ICU68: "measure-unit/", since ICU68 "unit/" -+ if (skeleton.indexOf("unit/") >= 0) { -+#endif - return Style::UNIT; - } - return Style::DECIMAL; -diff --git a/src/3rdparty/chromium/v8/src/objects/js-relative-time-format.cc b/src/3rdparty/chromium/v8/src/objects/js-relative-time-format.cc -index 267343aaae..64d56a1c12 100644 ---- a/src/3rdparty/chromium/v8/src/objects/js-relative-time-format.cc -+++ b/src/3rdparty/chromium/v8/src/objects/js-relative-time-format.cc -@@ -195,9 +195,18 @@ MaybeHandle JSRelativeTimeFormat::New( - } - } - -+#if U_ICU_VERSION_MAJOR_NUM < 68 - icu::DecimalFormat* decimal_format = - static_cast(number_format); - decimal_format->setMinimumGroupingDigits(-2); -+#else -+ if (number_format->getDynamicClassID() == -+ icu::DecimalFormat::getStaticClassID()) { -+ icu::DecimalFormat* decimal_format = -+ static_cast(number_format); -+ decimal_format->setMinimumGroupingDigits(-2); -+ } -+#endif - - // Change UDISPCTX_CAPITALIZATION_NONE to other values if - // ECMA402 later include option to change capitalization. diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-disable-git.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-disable-git.patch deleted file mode 100644 index c31e8970..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-disable-git.patch +++ /dev/null @@ -1,15 +0,0 @@ -generate_gni.sh: update_readme() runs git at the end of process, prevent it. - -Thanks-to: Georgy Yakovlev - ---- a/src/3rdparty/chromium/third_party/libvpx/generate_gni.sh 2021-02-07 12:51:49.438514897 +0100 -+++ b/src/3rdparty/chromium/third_party/libvpx/generate_gni.sh 2021-02-21 16:23:38.375724515 +0100 -@@ -519,8 +519,3 @@ - - gn format --in-place $BASE_DIR/BUILD.gn - gn format --in-place $BASE_DIR/libvpx_srcs.gni -- --cd $BASE_DIR/$LIBVPX_SRC_DIR --update_readme -- --cd $BASE_DIR diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20211015-pdfium-system-lcms2.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20211015-pdfium-system-lcms2.patch deleted file mode 100644 index b3c2ffb3..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20211015-pdfium-system-lcms2.patch +++ /dev/null @@ -1,79 +0,0 @@ -Description: Use system lcms2 -Author: Sandro Knauß -Origin: Debian -Forwarded: https://bugreports.qt.io/browse/QTBUG-61746 -Reviewed-by: Sandro Knauß -Last-Update: 2021-03-08 ---- -This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ ---- a/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn -+++ b/src/3rdparty/chromium/third_party/pdfium/third_party/BUILD.gn -@@ -239,58 +239,19 @@ if (!pdf_use_skia && !pdf_use_skia_paths - } - } - --config("fx_lcms2_warnings") { -- visibility = [ ":*" ] -- if (is_clang) { -- cflags = [ -- # cmslut.cc is sloppy with aggregate initialization. Version 2.7 of this -- # library doesn't appear to have this problem. -- "-Wno-missing-braces", -- ] -- } -+import("//build/shim_headers.gni") -+ -+shim_headers("lcms2_shim") { -+ root_path = "lcms/include" -+ headers = [ -+ "lcms2.h", -+ "lcms2_plugin.h", -+ ] - } - - source_set("fx_lcms2") { -- configs -= [ "//build/config/compiler:chromium_code" ] -- configs += [ -- "//build/config/compiler:no_chromium_code", -- "//build/config/sanitizers:cfi_icall_generalize_pointers", -- ":pdfium_third_party_config", -- -- # Must be after no_chromium_code for warning flags to be ordered correctly. -- ":fx_lcms2_warnings", -- ] -- sources = [ -- "lcms/include/lcms2.h", -- "lcms/include/lcms2_plugin.h", -- "lcms/src/cmsalpha.c", -- "lcms/src/cmscam02.c", -- "lcms/src/cmscgats.c", -- "lcms/src/cmscnvrt.c", -- "lcms/src/cmserr.c", -- "lcms/src/cmsgamma.c", -- "lcms/src/cmsgmt.c", -- "lcms/src/cmshalf.c", -- "lcms/src/cmsintrp.c", -- "lcms/src/cmsio0.c", -- "lcms/src/cmsio1.c", -- "lcms/src/cmslut.c", -- "lcms/src/cmsmd5.c", -- "lcms/src/cmsmtrx.c", -- "lcms/src/cmsnamed.c", -- "lcms/src/cmsopt.c", -- "lcms/src/cmspack.c", -- "lcms/src/cmspcs.c", -- "lcms/src/cmsplugin.c", -- "lcms/src/cmsps2.c", -- "lcms/src/cmssamp.c", -- "lcms/src/cmssm.c", -- "lcms/src/cmstypes.c", -- "lcms/src/cmsvirt.c", -- "lcms/src/cmswtpnt.c", -- "lcms/src/cmsxform.c", -- ] -- deps = [ "../core/fxcrt" ] -+ deps = [ ":lcms2_shim" ] -+ libs = ["lcms2"] - } - - if (!build_with_chromium) { diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch deleted file mode 100644 index c1a98d09..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0825e7bc64e47d87e1f1026cc80c933550f114f5 Mon Sep 17 00:00:00 2001 -From: Dimitry Andric -Date: Mon, 14 Feb 2022 13:55:25 +0100 -Subject: www/qt5-webengine: fix build with clang 14 - -Fixes compile error: - -In file included from gen/third_party/blink/renderer/platform/platform_jumbo_63.cc:8: -src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc:122:15: error: anonymous non-C-compatible type given name for linkage purposes by typedef declaration after its linkage was computed; add a tag name here to establish linkage prior to definition -typedef struct { - ^ - UTextWithBuffer -src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc:123:3: note: type is not C-compatible due to this member declaration - DISALLOW_NEW(); - ^~~~~~~~~~~~~~ -src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/allocator/allocator.h:40:2: note: expanded from macro 'DISALLOW_NEW' - public: \ - ^~~~~~~ -src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc:126:3: note: type is given name 'UTextWithBuffer' for linkage purposes by this typedef declaration -} UTextWithBuffer; - ^ - -PR: 261949 -Approved by: adridg (maintainer) -MFH: 2022Q1 - ---- a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc -+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc -@@ -119,11 +119,11 @@ enum TextContext { kNoContext, kPriorContext, kPrimary - - const int kTextBufferCapacity = 16; - --typedef struct { -+struct UTextWithBuffer { - DISALLOW_NEW(); - UText text; - UChar buffer[kTextBufferCapacity]; --} UTextWithBuffer; -+}; - - static inline int64_t TextPinIndex(int64_t& index, int64_t limit) { - if (index < 0) diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch deleted file mode 100644 index 15c19266..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 05f6ffbbce0a2aad01dc05d682cbe4a1ec44fad5 Mon Sep 17 00:00:00 2001 -From: Antonio Rojas -Date: Tue, 25 Jan 2022 10:51:58 +0000 -Subject: [PATCH] Fix build with ffmpeg 5 - ---- - chromium/media/ffmpeg/ffmpeg_common.h | 1 + - chromium/media/filters/audio_file_reader.cc | 2 +- - chromium/media/filters/ffmpeg_audio_decoder.cc | 2 +- - chromium/media/filters/ffmpeg_demuxer.cc | 12 ++++++------ - chromium/media/filters/ffmpeg_glue.cc | 4 ---- - chromium/media/filters/ffmpeg_video_decoder.cc | 2 +- - chromium/media/filters/media_file_checker.cc | 2 +- - .../video_coding/codecs/h264/h264_decoder_impl.cc | 2 +- - 8 files changed, 12 insertions(+), 15 deletions(-) - -diff --git a/chromium/media/ffmpeg/ffmpeg_common.h b/chromium/media/ffmpeg/ffmpeg_common.h -index 2734a485cbd..70b1877a43c 100644 ---- a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h -+++ b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h -@@ -29,6 +29,7 @@ extern "C" { - #include - #include - #include -+#include - #include - #include - #include -diff --git a/chromium/media/filters/audio_file_reader.cc b/chromium/media/filters/audio_file_reader.cc -index cb81d920def..bd73908d0ca 100644 ---- a/src/3rdparty/chromium/media/filters/audio_file_reader.cc -+++ b/src/3rdparty/chromium/media/filters/audio_file_reader.cc -@@ -85,7 +85,7 @@ bool AudioFileReader::OpenDemuxer() { - } - - bool AudioFileReader::OpenDecoder() { -- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); - if (codec) { - // MP3 decodes to S16P which we don't support, tell it to use S16 instead. - if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) -diff --git a/chromium/media/filters/ffmpeg_audio_decoder.cc b/chromium/media/filters/ffmpeg_audio_decoder.cc -index 0d825ed791b..72fac6167ef 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc -@@ -329,7 +329,7 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { - } - } - -- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); - if (!codec || - avcodec_open2(codec_context_.get(), codec, &codec_options) < 0) { - DLOG(ERROR) << "Could not initialize audio decoder: " -diff --git a/chromium/media/filters/ffmpeg_demuxer.cc b/chromium/media/filters/ffmpeg_demuxer.cc -index d34db63f3ef..427565b00c1 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc -@@ -98,12 +98,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { - - // Next try to use the first DTS value, for codecs where we know PTS == DTS - // (excludes all H26x codecs). The start time must be returned in PTS. -- if (stream->first_dts != kNoFFmpegTimestamp && -+ if (av_stream_get_first_dts(stream) != kNoFFmpegTimestamp && - stream->codecpar->codec_id != AV_CODEC_ID_HEVC && - stream->codecpar->codec_id != AV_CODEC_ID_H264 && - stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) { - const base::TimeDelta first_pts = -- ConvertFromTimeBase(stream->time_base, stream->first_dts); -+ ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream)); - if (first_pts < start_time) - start_time = first_pts; - } -@@ -408,11 +408,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - scoped_refptr buffer; - - if (type() == DemuxerStream::TEXT) { -- int id_size = 0; -+ size_t id_size = 0; - uint8_t* id_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size); - -- int settings_size = 0; -+ size_t settings_size = 0; - uint8_t* settings_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size); - -@@ -424,7 +424,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - buffer = DecoderBuffer::CopyFrom(packet->data, packet->size, - side_data.data(), side_data.size()); - } else { -- int side_data_size = 0; -+ size_t side_data_size = 0; - uint8_t* side_data = av_packet_get_side_data( - packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); - -@@ -485,7 +485,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { - packet->size - data_offset); - } - -- int skip_samples_size = 0; -+ size_t skip_samples_size = 0; - const uint32_t* skip_samples_ptr = - reinterpret_cast(av_packet_get_side_data( - packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); -diff --git a/chromium/media/filters/ffmpeg_glue.cc b/chromium/media/filters/ffmpeg_glue.cc -index 0ef3521473d..8483ecc348f 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc -@@ -59,7 +59,6 @@ static int64_t AVIOSeekOperation(void* opaque, int64_t offset, int whence) { - } - - void FFmpegGlue::InitializeFFmpeg() { -- av_register_all(); - } - - static void LogContainer(bool is_local_file, -@@ -95,9 +94,6 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol* protocol) { - // Enable fast, but inaccurate seeks for MP3. - format_context_->flags |= AVFMT_FLAG_FAST_SEEK; - -- // Ensures we can read out various metadata bits like vp8 alpha. -- format_context_->flags |= AVFMT_FLAG_KEEP_SIDE_DATA; -- - // Ensures format parsing errors will bail out. From an audit on 11/2017, all - // instances were real failures. Solves bugs like http://crbug.com/710791. - format_context_->error_recognition |= AV_EF_EXPLODE; -diff --git a/chromium/media/filters/ffmpeg_video_decoder.cc b/chromium/media/filters/ffmpeg_video_decoder.cc -index ef12477ee89..7996606f5f9 100644 ---- a/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -+++ b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc -@@ -391,7 +391,7 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config, - if (decode_nalus_) - codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; - -- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); - if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { - ReleaseFFmpegResources(); - return false; -diff --git a/chromium/media/filters/media_file_checker.cc b/chromium/media/filters/media_file_checker.cc -index 59c2a2fc618..1a9872c7acb 100644 ---- a/src/3rdparty/chromium/media/filters/media_file_checker.cc -+++ b/src/3rdparty/chromium/media/filters/media_file_checker.cc -@@ -68,7 +68,7 @@ bool MediaFileChecker::Start(base::TimeDelta check_time) { - auto context = AVStreamToAVCodecContext(format_context->streams[i]); - if (!context) - continue; -- AVCodec* codec = avcodec_find_decoder(cp->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(cp->codec_id); - if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) { - auto loop = std::make_unique(context.get()); - stream_contexts[i] = {std::move(context), std::move(loop)}; -diff --git a/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -index 9002b874611..d12fade8b63 100644 ---- a/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -+++ b/src/3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -@@ -203,7 +203,7 @@ int32_t H264DecoderImpl::InitDecode(const VideoCodec* codec_settings, - // a pointer |this|. - av_context_->opaque = this; - -- AVCodec* codec = avcodec_find_decoder(av_context_->codec_id); -+ const AVCodec* codec = avcodec_find_decoder(av_context_->codec_id); - if (!codec) { - // This is an indication that FFmpeg has not been initialized or it has not - // been compiled/initialized with the correct set of codecs. --- -2.35.1 - diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-gcc12-includes.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-gcc12-includes.patch deleted file mode 100644 index cd476564..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-gcc12-includes.patch +++ /dev/null @@ -1,32 +0,0 @@ -https://build.opensuse.org/package/view_file/KDE:Qt:5.15/libqt5-qtwebengine/0001-skia-Some-includes-to-fix-build-with-GCC-12.patch?expand=1 -https://bugs.gentoo.org/840326 - -From 68799a1e0815b20ca59ce354a55280399257a201 Mon Sep 17 00:00:00 2001 -From: Fabian Vogt -Date: Fri, 25 Mar 2022 15:29:28 +0100 -Subject: [PATCH] skia: Some includes to fix build with GCC 12 - -Those includes got introduced upstream for other reasons and fixed building -with GCC 12 as a side effect. ---- a/src/3rdparty/chromium/third_party/skia/include/core/SkColor.h -+++ b/src/3rdparty/chromium/third_party/skia/include/core/SkColor.h -@@ -12,6 +12,8 @@ - #include "include/core/SkScalar.h" - #include "include/core/SkTypes.h" - -+#include -+ - /** \file SkColor.h - - Types, consts, functions, and macros for colors. ---- 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,8 @@ - - #include "include/utils/SkParse.h" - -+#include // std::lower_bound -+ - static constexpr const char* gColorNames[] = { - "aliceblue", - "antiquewhite", diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220505-extra-gn.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220505-extra-gn.patch deleted file mode 100644 index a319f521..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220505-extra-gn.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/src/core/gn_run.pro -+++ b/src/core/gn_run.pro -@@ -64,6 +64,7 @@ - } - } else { - gn_args+= "qtwebengine_target=\"$$system_path($$OUT_PWD/$$getConfigDir()):QtWebEngineCore\"" -+ gn_args += $$(EXTRA_GN) - gn_args = $$system_quote($$gn_args) - gn_build_root = $$system_quote($$system_path($$OUT_PWD/$$getConfigDir())) - gn_run = $$gn_binary gen $$gn_build_root $$gn_python --args=$$gn_args --root=$$gn_src_root diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fixup-CVE-2022-0796.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fixup-CVE-2022-0796.patch deleted file mode 100644 index c38bf1bd..00000000 --- a/dev-qt/qtwebengine/files/qtwebengine-5.15.5_p20220618-fixup-CVE-2022-0796.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 7e11d69b957595a172a3eb60db17141daed29d63 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Michael=20Br=C3=BCning?= -Date: Mon, 20 Jun 2022 17:19:58 +0200 -Subject: Fixup: CVE-2022-0796: Use after free in Media - -Commit ecc2bb74f1f accidentally introduced a build break due to an -apparent typo. - -This fixes it. - -Change-Id: I746c6f10ecd2b212b847a291677e24e527d6b922 -Reviewed-by: Michal Klocek ---- - chromium/content/renderer/media/batching_media_log.h | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/3rdparty/chromium/content/renderer/media/batching_media_log.h b/src/3rdparty/chromium/content/renderer/media/batching_media_log.h -index b68535aea42..a28d426878f 100644 ---- a/src/3rdparty/chromium/content/renderer/media/batching_media_log.h -+++ b/src/3rdparty/chromium/content/renderer/media/batching_media_log.h -@@ -72,18 +72,18 @@ class CONTENT_EXPORT BatchingMediaLog : public media::MediaLog { - // guarantees provided by MediaLog, since SendQueuedMediaEvents must also - // be synchronized with respect to AddEvent. - mutable base::Lock lock_; -- const base::TickClock* tick_clock_ GUARDED_BY(LOCK); -- base::TimeTicks last_ipc_send_time_ GUARDED_BY(LOCK); -- std::vector queued_media_events_ GUARDED_BY(LOCK); -+ const base::TickClock* tick_clock_ GUARDED_BY(lock_); -+ base::TimeTicks last_ipc_send_time_ GUARDED_BY(lock_); -+ std::vector queued_media_events_ GUARDED_BY(lock_); - - // impl for sending queued events. -- std::vector> event_handlers_ GUARDED_BY(LOCK); -+ std::vector> event_handlers_ GUARDED_BY(lock_); - - // For enforcing max 1 pending send. -- bool ipc_send_pending_ GUARDED_BY(LOCK); -+ bool ipc_send_pending_ GUARDED_BY(lock_); - - // Limits the number of events we send over IPC to one. -- std::unique_ptr last_duration_changed_event_ GUARDED_BY(LOCK); -+ std::unique_ptr last_duration_changed_event_ GUARDED_BY(lock_); - - // Holds the earliest MEDIA_ERROR_LOG_ENTRY event added to this log. This is - // most likely to contain the most specific information available describing --- -cgit v1.2.1 - diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-clang-libc++.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-clang-libc++.patch new file mode 100644 index 00000000..ac9c4db9 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-clang-libc++.patch @@ -0,0 +1,11 @@ +--- a/src/gn/CMakeLists.txt ++++ b/src/gn/CMakeLists.txt +@@ -46,6 +46,7 @@ add_custom_command( + --ld ${GN_LINKER} + --ar ${CMAKE_AR} + --qt-version "${QT_REPO_MODULE_VERSION}.qtwebengine.qt.io" ++ --no-static-libstdc++ + $<$:--isysroot> + $<$:${CMAKE_OSX_SYSROOT}> + COMMAND Ninja::ninja -C ${GN_BINARY_DIR}/$ ${GN_EXECUTABLE} + diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-canonicalize-file-name.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-canonicalize-file-name.patch new file mode 100644 index 00000000..c192269a --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-canonicalize-file-name.patch @@ -0,0 +1,16 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0010-canonicalize-file-name.patch + +no canonicalize_file_name on musl. funnily, the file using this says this is +not portable, but avoids the nonportability of realpath(path, NULL); + +--- a/src/3rdparty/chromium/third_party/nasm/config/config-linux.h ++++ b/src/3rdparty/chromium/third_party/nasm/config/config-linux.h +@@ -139,7 +139,7 @@ + #define HAVE_ACCESS 1 + + /* Define to 1 if you have the `canonicalize_file_name' function. */ +-#define HAVE_CANONICALIZE_FILE_NAME 1 ++/* #define HAVE_CANONICALIZE_FILE_NAME 1 */ + + /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */ + /* #undef HAVE_CPU_TO_LE16 */ diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-close.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-close.patch new file mode 100644 index 00000000..208ab64f --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-close.patch @@ -0,0 +1,33 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0009-close.patch + +--- a/src/3rdparty/chromium/base/files/scoped_file_linux.cc ++++ b/src/3rdparty/chromium/base/files/scoped_file_linux.cc +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + + #include "base/compiler_specific.h" + #include "base/debug/stack_trace.h" +@@ -80,9 +81,18 @@ + + extern "C" { + +-int __close(int); +- + __attribute__((visibility("default"), noinline)) int close(int fd) { ++ static int (*__close)(int) = nullptr; ++ ++ if (__close == nullptr) { ++ __close = (int (*)(int))dlsym(RTLD_NEXT, "close"); ++ ++ if (__close == nullptr) { ++ RAW_LOG(ERROR, "musl close not found\n"); ++ IMMEDIATE_CRASH(); ++ } ++ } ++ + if (base::IsFDOwned(fd) && g_is_ownership_enforced) + CrashOnFdOwnershipViolation(); + return __close(fd); diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-crashpad.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-crashpad.patch new file mode 100644 index 00000000..ed3ca52c --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-crashpad.patch @@ -0,0 +1,13 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0005-qt-musl-crashpad.patch + +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/util/linux/thread_info.h +@@ -273,7 +273,7 @@ union FloatContext { + "Size mismatch"); + #elif defined(ARCH_CPU_ARMEL) + static_assert(sizeof(f32_t::fpregs) == sizeof(user_fpregs), "Size mismatch"); +-#if !defined(__GLIBC__) ++#if defined(OS_ANDROID) + static_assert(sizeof(f32_t::vfp) == sizeof(user_vfp), "Size mismatch"); + #endif + #elif defined(ARCH_CPU_ARM64) diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-default-pthread-stacksize.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-default-pthread-stacksize.patch new file mode 100644 index 00000000..f9f63734 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-default-pthread-stacksize.patch @@ -0,0 +1,23 @@ +--- a/src/3rdparty/chromium/base/threading/platform_thread_linux.cc ++++ b/src/3rdparty/chromium/base/threading/platform_thread_linux.cc +@@ -186,7 +186,8 @@ + + size_t GetDefaultThreadStackSize(const pthread_attr_t& attributes) { + #if !defined(THREAD_SANITIZER) +- return 0; ++ // use 2mb to avoid running out of space. This is what android uses ++ return 2 * (1 << 20); + #else + // ThreadSanitizer bloats the stack heavily. Evidence has been that the + // default stack size isn't enough for some browser tests. +--- a/src/3rdparty/chromium/base/threading/platform_thread_unittest.cc.orig ++++ b/src/3rdparty/chromium/base/threading/platform_thread_unittest.cc +@@ -411,7 +411,7 @@ + ((BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) && \ + !defined(THREAD_SANITIZER)) || \ + (BUILDFLAG(IS_ANDROID) && !defined(ADDRESS_SANITIZER)) +- EXPECT_EQ(0u, stack_size); ++ EXPECT_EQ(2u << 20, stack_size); + #else + EXPECT_GT(stack_size, 0u); + EXPECT_LT(stack_size, 20u * (1 << 20)); diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-disable-glibc-check.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-disable-glibc-check.patch new file mode 100644 index 00000000..ef690267 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-disable-glibc-check.patch @@ -0,0 +1,21 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/remove-glibc-check.patch + +Qt checks if glibc is available and if not disables large part of Qt6WebEngine and thus cripples functionality. +However these parts work fine with Musl so there is no need to disable them. - Alpine + +Just remove the check so it builds again. + +--- a/configure.cmake ++++ b/configure.cmake +@@ -403,11 +403,6 @@ add_check_for_support( + CONDITION NOT LINUX OR PkgConfig_FOUND + MESSAGE "A pkg-config support is required." + ) +-add_check_for_support( +- MODULES QtWebEngine QtPdf +- CONDITION NOT LINUX OR TEST_glibc +- MESSAGE "A suitable version >= 2.17 of glibc is required." +-) + add_check_for_support( + MODULES QtWebEngine QtPdf + CONDITION NOT LINUX OR TEST_khr diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-fix-narrowing-cast.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-fix-narrowing-cast.patch new file mode 100644 index 00000000..e76cc996 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-fix-narrowing-cast.patch @@ -0,0 +1,44 @@ +--- a/src/3rdparty/chromium/base/files/file_util_linux.cc ++++ b/src/3rdparty/chromium/base/files/file_util_linux.cc +@@ -30,7 +30,7 @@ + case EXT2_SUPER_MAGIC: // Also ext3 and ext4 + case MSDOS_SUPER_MAGIC: + case REISERFS_SUPER_MAGIC: +- case static_cast(BTRFS_SUPER_MAGIC): ++ case BTRFS_SUPER_MAGIC: + case 0x5346544E: // NTFS + case 0x58465342: // XFS + case 0x3153464A: // JFS +@@ -40,14 +40,14 @@ + *type = FILE_SYSTEM_NFS; + break; + case SMB_SUPER_MAGIC: +- case static_cast(0xFF534D42): // CIFS ++ case 0xFF534D42: // CIFS + *type = FILE_SYSTEM_SMB; + break; + case CODA_SUPER_MAGIC: + *type = FILE_SYSTEM_CODA; + break; +- case static_cast(HUGETLBFS_MAGIC): +- case static_cast(RAMFS_MAGIC): ++ case HUGETLBFS_MAGIC: ++ case RAMFS_MAGIC: + case TMPFS_MAGIC: + *type = FILE_SYSTEM_MEMORY; + break; +--- a/src/3rdparty/chromium/base/system/sys_info_posix.cc ++++ b/src/3rdparty/chromium/base/system/sys_info_posix.cc +@@ -100,10 +100,10 @@ + if (HANDLE_EINTR(statfs(path.value().c_str(), &stats)) != 0) + return false; + + switch (stats.f_type) { + case TMPFS_MAGIC: +- case static_cast(HUGETLBFS_MAGIC): +- case static_cast(RAMFS_MAGIC): ++ case HUGETLBFS_MAGIC: ++ case RAMFS_MAGIC: + return true; + } + return false; diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-lfs64.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-lfs64.patch new file mode 100644 index 00000000..55a8785f --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-lfs64.patch @@ -0,0 +1,37 @@ +--- a/src/3rdparty/gn/src/base/files/file.h ++++ b/src/3rdparty/gn/src/base/files/file.h +@@ -26,7 +26,7 @@ namespace base { + defined(OS_ANDROID) && __ANDROID_API__ < 21 + typedef struct stat stat_wrapper_t; + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) +-typedef struct stat64 stat_wrapper_t; ++typedef struct stat stat_wrapper_t; + #endif + + // Thin wrapper around an OS-level file. +--- a/src/3rdparty/gn/src/base/files/file_posix.cc ++++ b/src/3rdparty/gn/src/base/files/file_posix.cc +@@ -32,7 +32,7 @@ int CallFstat(int fd, stat_wrapper_t* sb + } + #else + int CallFstat(int fd, stat_wrapper_t* sb) { +- return fstat64(fd, sb); ++ return fstat(fd, sb); + } + #endif + +--- a/src/3rdparty/gn/src/base/files/file_util_posix.cc ++++ b/src/3rdparty/gn/src/base/files/file_util_posix.cc +@@ -70,10 +70,10 @@ int CallLstat(const char* path, stat_wra + } + #else + int CallStat(const char* path, stat_wrapper_t* sb) { +- return stat64(path, sb); ++ return stat(path, sb); + } + int CallLstat(const char* path, stat_wrapper_t* sb) { +- return lstat64(path, sb); ++ return lstat(path, sb); + } + #endif + diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-mallinfo.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-mallinfo.patch new file mode 100644 index 00000000..c45e1468 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-mallinfo.patch @@ -0,0 +1,75 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0003-qt-musl-mallinfo.patch + +musl does not implement mallinfo()/mallinfo2() +(or rather, malloc-ng, musl's allocator, doesn't) +-- +--- a/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc ++++ b/src/3rdparty/chromium/base/trace_event/malloc_dump_provider.cc +@@ -185,7 +185,6 @@ + #define MALLINFO2_FOUND_IN_LIBC + struct mallinfo2 info = mallinfo2(); + #endif +-#endif // defined(__GLIBC__) && defined(__GLIBC_PREREQ) + #if !defined(MALLINFO2_FOUND_IN_LIBC) + struct mallinfo info = mallinfo(); + #endif +@@ -205,6 +204,7 @@ + sys_alloc_dump->AddScalar(MemoryAllocatorDump::kNameSize, + MemoryAllocatorDump::kUnitsBytes, info.uordblks); + } ++#endif // defined(__GLIBC__) && defined(__GLIBC_PREREQ) + } + #endif + +@@ -339,7 +340,7 @@ + &allocated_objects_count); + #elif BUILDFLAG(IS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. +-#else ++#elif defined(__GLIBC__) + ReportMallinfoStats(/*pmd=*/nullptr, &total_virtual_size, &resident_size, + &allocated_objects_size, &allocated_objects_count); + #endif +--- a/src/3rdparty/chromium/base/process/process_metrics_posix.cc ++++ b/src/3rdparty/chromium/base/process/process_metrics_posix.cc +@@ -105,7 +105,7 @@ + + #endif // !BUILDFLAG(IS_FUCHSIA) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#if (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + namespace { + + size_t GetMallocUsageMallinfo() { +@@ -123,7 +123,7 @@ + } + + } // namespace +-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || ++#endif // (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || + // BUILDFLAG(IS_ANDROID) + + size_t ProcessMetrics::GetMallocUsage() { +@@ -131,9 +131,9 @@ + malloc_statistics_t stats = {0}; + malloc_zone_statistics(nullptr, &stats); + return stats.size_in_use; +-#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) ++#elif (BUILDFLAG(IS_LINUX) && defined(__GLIBC__)) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_ANDROID) + return GetMallocUsageMallinfo(); +-#elif BUILDFLAG(IS_FUCHSIA) ++#else + // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. + return 0; + #endif +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_partition_alloc.cc +@@ -717,7 +717,7 @@ + + #endif // !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_ANDROID) + +-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ++#if 0 + SHIM_ALWAYS_EXPORT struct mallinfo mallinfo(void) __THROW { + base::SimplePartitionStatsDumper allocator_dumper; + Allocator()->DumpStats("malloc", true, &allocator_dumper); diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-missing-includes.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-missing-includes.patch new file mode 100644 index 00000000..697867a5 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-missing-includes.patch @@ -0,0 +1,22 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0014-missing-includes.patch + +--- a/src/3rdparty/chromium/sandbox/linux/services/credentials.h ++++ b/src/3rdparty/chromium/sandbox/linux/services/credentials.h +@@ -13,6 +13,7 @@ + + #include + #include ++#include + + #include "sandbox/linux/system_headers/capability.h" + #include "sandbox/sandbox_export.h" +--- a/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h ++++ b/src/3rdparty/chromium/net/third_party/quiche/src/quiche/http2/adapter/window_manager.h +@@ -2,6 +2,7 @@ + #define QUICHE_HTTP2_ADAPTER_WINDOW_MANAGER_H_ + + #include ++#include + + #include + diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-no-execinfo.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-no-execinfo.patch new file mode 100644 index 00000000..2a16bf39 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-no-execinfo.patch @@ -0,0 +1,98 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0006-no-execinfo.patch + +--- a/src/3rdparty/chromium/base/debug/stack_trace_posix.cc ++++ b/src/3rdparty/chromium/base/debug/stack_trace_posix.cc +@@ -27,7 +27,7 @@ + #if !defined(USE_SYMBOLIZE) + #include + #endif +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + #include + #endif + +@@ -89,7 +89,7 @@ + // Note: code in this function is NOT async-signal safe (std::string uses + // malloc internally). + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + std::string::size_type search_from = 0; + while (search_from < text->size()) { + // Look for the start of a mangled symbol, from search_from. +@@ -136,7 +136,7 @@ + virtual ~BacktraceOutputHandler() = default; + }; + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void OutputPointer(void* pointer, BacktraceOutputHandler* handler) { + // This should be more than enough to store a 64-bit number in hex: + // 16 hex digits + 1 for null-terminator. +@@ -839,7 +839,7 @@ + // If we do not have unwind tables, then try tracing using frame pointers. + return base::debug::TraceStackFramePointers(const_cast(trace), + count, 0); +-#elif !defined(__UCLIBC__) && !defined(_AIX) ++#elif defined(__GLIBC__) && !defined(_AIX) + // Though the backtrace API man page does not list any possible negative + // return values, we take no chance. + return base::saturated_cast(backtrace(trace, count)); +@@ -852,13 +852,13 @@ + // NOTE: This code MUST be async-signal safe (it's used by in-process + // stack dumping signal handler). NO malloc or stdio is allowed here. + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + PrintBacktraceOutputHandler handler; + ProcessBacktrace(trace_, count_, prefix_string, &handler); + #endif + } + +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + void StackTrace::OutputToStreamWithPrefix(std::ostream* os, + const char* prefix_string) const { + StreamBacktraceOutputHandler handler(os); +--- a/src/3rdparty/chromium/v8/src/codegen/external-reference-table.cc ++++ b/src/3rdparty/chromium/v8/src/codegen/external-reference-table.cc +@@ -11,7 +11,9 @@ + + #if defined(DEBUG) && defined(V8_OS_LINUX) && !defined(V8_OS_ANDROID) + #define SYMBOLIZE_FUNCTION ++#if defined(__GLIBC__) + #include ++#endif + + #include + +@@ -96,7 +98,7 @@ + } + + const char* ExternalReferenceTable::ResolveSymbol(void* address) { +-#ifdef SYMBOLIZE_FUNCTION ++#if defined(SYMBOLIZE_FUNCTION) && defined(__GLIBC__) + char** names = backtrace_symbols(&address, 1); + const char* name = names[0]; + // The array of names is malloc'ed. However, each name string is static +--- a/src/3rdparty/chromium/base/debug/stack_trace.cc ++++ b/src/3rdparty/chromium/base/debug/stack_trace.cc +@@ -251,7 +253,9 @@ + } + + void StackTrace::OutputToStream(std::ostream* os) const { ++#if defined(__GLIBC__) && !defined(_AIX) + OutputToStreamWithPrefix(os, nullptr); ++#endif + } + + std::string StackTrace::ToString() const { +@@ -281,7 +281,7 @@ + } + std::string StackTrace::ToStringWithPrefix(const char* prefix_string) const { + std::stringstream stream; +-#if !defined(__UCLIBC__) && !defined(_AIX) ++#if defined(__GLIBC__) && !defined(_AIX) + OutputToStreamWithPrefix(&stream, prefix_string); + #endif + return stream.str(); diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-remove-decls-usage.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-remove-decls-usage.patch new file mode 100644 index 00000000..7145a066 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-remove-decls-usage.patch @@ -0,0 +1,122 @@ +diff -upr a/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_internals.h b/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_internals.h +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_internals.h 2023-06-17 02:09:34.375431959 +0000 ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/shim/allocator_shim_internals.h 2023-06-17 02:40:16.075431600 +0000 +@@ -9,10 +9,6 @@ + + #if defined(__GNUC__) + +-#if BUILDFLAG(IS_POSIX) +-#include // for __THROW +-#endif +- + #ifndef __THROW // Not a glibc system + #ifdef _NOEXCEPT // LLVM libc++ uses noexcept instead + #define __THROW _NOEXCEPT +diff -upr a/src/3rdparty/chromium/base/mac/close_nocancel.cc b/src/3rdparty/chromium/base/mac/close_nocancel.cc +--- a/src/3rdparty/chromium/base/mac/close_nocancel.cc 2023-06-17 02:09:34.382098624 +0000 ++++ b/src/3rdparty/chromium/base/mac/close_nocancel.cc 2023-06-17 02:40:39.528764926 +0000 +@@ -34,7 +34,6 @@ + // is resolved from libsyscall. By linking with this version of close prior to + // the libsyscall version, close's implementation is overridden. + +-#include + #include + + // If the non-cancelable variants of all system calls have already been +diff -upr a/src/3rdparty/chromium/third_party/apple_apsl/dnsinfo.h b/src/3rdparty/chromium/third_party/apple_apsl/dnsinfo.h +--- a/src/3rdparty/chromium/third_party/apple_apsl/dnsinfo.h 2023-06-17 02:09:35.038765298 +0000 ++++ b/src/3rdparty/chromium/third_party/apple_apsl/dnsinfo.h 2023-06-17 02:36:09.195431519 +0000 +@@ -28,7 +28,6 @@ + * These routines provide access to the systems DNS configuration + */ + +-#include + #include + #include + #include +@@ -91,7 +90,9 @@ typedef struct { + #pragma pack() + + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + /* + * DNS configuration access APIs +@@ -109,6 +110,8 @@ void + _dns_configuration_ack (dns_config_t *config, + const char *bundle_id); + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* __DNSINFO_H__ */ +diff -upr a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h +--- a/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h 2023-06-17 02:09:35.308765297 +0000 ++++ b/src/3rdparty/chromium/third_party/crashpad/crashpad/compat/linux/sys/ptrace.h 2023-06-17 02:40:53.098764952 +0000 +@@ -17,8 +17,6 @@ + + #include_next + +-#include +- + // https://sourceware.org/bugzilla/show_bug.cgi?id=22433 + #if !defined(PTRACE_GET_THREAD_AREA) && !defined(PT_GET_THREAD_AREA) && \ + defined(__GLIBC__) +diff -upr a/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h b/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h +--- a/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h 2023-06-17 02:09:35.815431964 +0000 ++++ b/src/3rdparty/chromium/third_party/libsync/src/include/sync/sync.h 2023-06-17 02:35:08.408764861 +0000 +@@ -19,12 +19,13 @@ + #ifndef __SYS_CORE_SYNC_H + #define __SYS_CORE_SYNC_H + +-#include + #include + + #include + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + struct sync_legacy_merge_data { + int32_t fd2; +@@ -158,6 +159,8 @@ struct sync_pt_info *sync_pt_info(struct + struct sync_pt_info *itr); + void sync_fence_info_free(struct sync_fence_info_data *info); + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* __SYS_CORE_SYNC_H */ +diff -upr a/src/3rdparty/chromium/third_party/libsync/src/sw_sync.h b/src/3rdparty/chromium/third_party/libsync/src/sw_sync.h +--- a/src/3rdparty/chromium/third_party/libsync/src/sw_sync.h 2023-06-17 02:09:35.815431964 +0000 ++++ b/src/3rdparty/chromium/third_party/libsync/src/sw_sync.h 2023-06-17 02:36:58.752098226 +0000 +@@ -19,7 +19,9 @@ + #ifndef __SYS_CORE_SW_SYNC_H + #define __SYS_CORE_SW_SYNC_H + +-__BEGIN_DECLS ++#ifdef __cplusplus ++extern "C" { ++#endif + + /* + * sw_sync is mainly intended for testing and should not be compiled into +@@ -30,6 +32,8 @@ int sw_sync_timeline_create(void); + int sw_sync_timeline_inc(int fd, unsigned count); + int sw_sync_fence_create(int fd, const char *name, unsigned value); + +-__END_DECLS ++#ifdef __cplusplus ++} ++#endif + + #endif /* __SYS_CORE_SW_SYNC_H */ diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-resolve.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-resolve.patch new file mode 100644 index 00000000..0931a2d3 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-resolve.patch @@ -0,0 +1,66 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0004-qt-musl-resolve.patch + +--- a/src/3rdparty/chromium/net/dns/public/scoped_res_state.cc ++++ b/src/3rdparty/chromium/net/dns/public/scoped_res_state.cc +@@ -13,7 +13,7 @@ + namespace net { + + ScopedResState::ScopedResState() { +-#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) ++#if BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_FUCHSIA) || defined(_GNU_SOURCE) + // Note: res_ninit in glibc always returns 0 and sets RES_INIT. + // res_init behaves the same way. + memset(&_res, 0, sizeof(_res)); +@@ -25,16 +25,8 @@ + } + + ScopedResState::~ScopedResState() { +-#if !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) +- +- // Prefer res_ndestroy where available. +-#if BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) +- res_ndestroy(&res_); +-#else +- res_nclose(&res_); +-#endif // BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_FREEBSD) +- +-#endif // !BUILDFLAG(IS_OPENBSD) && !BUILDFLAG(IS_FUCHSIA) ++ // musl res_init() doesn't actually do anything ++ // no destruction is necessary as no memory has been allocated + } + + bool ScopedResState::IsValid() const { +--- a/src/3rdparty/chromium/net/dns/dns_reloader.cc ++++ b/src/3rdparty/chromium/net/dns/dns_reloader.cc +@@ -6,8 +6,7 @@ + + #include "build/build_config.h" + +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ +- !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_FUCHSIA) ++#if defined(__GLIBC__) + + #include + +--- a/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc ++++ b/src/3rdparty/chromium/net/dns/host_resolver_system_task.cc +@@ -310,8 +310,7 @@ + } + + void EnsureSystemHostResolverCallReady() { +-#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_APPLE) && !BUILDFLAG(IS_OPENBSD) && \ +- !BUILDFLAG(IS_ANDROID) ++#if defined(__GLIBC__) + EnsureDnsReloaderInit(); + #elif BUILDFLAG(IS_WIN) + EnsureWinsockInit(); +@@ -396,8 +396,7 @@ + base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, + base::BlockingType::WILL_BLOCK); + +-#if BUILDFLAG(IS_POSIX) && \ +- !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID)) ++#if defined(__GLIBC__) + DnsReloaderMaybeReload(); + #endif + auto [ai, err, os_error] = AddressInfo::Get(host, hints, nullptr, network); diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-sandbox.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-sandbox.patch new file mode 100644 index 00000000..b1a5647b --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-sandbox.patch @@ -0,0 +1,97 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0007-musl-sandbox.patch + +--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc ++++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions.cc +@@ -139,21 +139,11 @@ namespace sandbox { + // present (as in newer versions of posix_spawn). + ResultExpr RestrictCloneToThreadsAndEPERMFork() { + const Arg flags(0); +- +- // TODO(mdempsky): Extend DSL to support (flags & ~mask1) == mask2. +- const uint64_t kAndroidCloneMask = CLONE_VM | CLONE_FS | CLONE_FILES | +- CLONE_SIGHAND | CLONE_THREAD | +- CLONE_SYSVSEM; +- const uint64_t kObsoleteAndroidCloneMask = kAndroidCloneMask | CLONE_DETACHED; +- +- const uint64_t kGlibcPthreadFlags = +- CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | CLONE_THREAD | +- CLONE_SYSVSEM | CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID; +- const BoolExpr glibc_test = flags == kGlibcPthreadFlags; +- +- const BoolExpr android_test = +- AnyOf(flags == kAndroidCloneMask, flags == kObsoleteAndroidCloneMask, +- flags == kGlibcPthreadFlags); ++ const int required = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND | ++ CLONE_THREAD | CLONE_SYSVSEM; ++ const int safe = CLONE_SETTLS | CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | ++ CLONE_DETACHED; ++ const BoolExpr thread_clone_ok = (flags&~safe)==required; + + // The following two flags are the two important flags in any vfork-emulating + // clone call. EPERM any clone call that contains both of them. +@@ -163,7 +153,7 @@ ResultExpr RestrictCloneToThreadsAndEPERMFork() { + AnyOf((flags & (CLONE_VM | CLONE_THREAD)) == 0, + (flags & kImportantCloneVforkFlags) == kImportantCloneVforkFlags); + +- return If(IsAndroid() ? android_test : glibc_test, Allow()) ++ return If(thread_clone_ok, Allow()) + .ElseIf(is_fork_or_clone_vfork, Error(EPERM)) + .Else(CrashSIGSYSClone()); + } +--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc ++++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +@@ -392,6 +392,7 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { + #if defined(__i386__) + case __NR_waitpid: + #endif ++ case __NR_set_tid_address: + return true; + case __NR_clone: // Should be parameter-restricted. + case __NR_setns: // Privileged. +@@ -404,7 +405,6 @@ bool SyscallSets::IsAllowedProcessStartOrDeath(int sysno) { + #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) + case __NR_set_thread_area: + #endif +- case __NR_set_tid_address: + case __NR_unshare: + #if !defined(__mips__) && !defined(__aarch64__) + case __NR_vfork: +@@ -514,6 +514,8 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { + case __NR_mlock: + case __NR_munlock: + case __NR_munmap: ++ case __NR_mremap: ++ case __NR_membarrier: + return true; + case __NR_madvise: + case __NR_mincore: +@@ -531,7 +533,6 @@ bool SyscallSets::IsAllowedAddressSpaceAccess(int sysno) { + case __NR_modify_ldt: + #endif + case __NR_mprotect: +- case __NR_mremap: + case __NR_msync: + case __NR_munlockall: + case __NR_readahead: +--- a/src/3rdparty/chromium/sandbox/linux/system_headers/linux_syscalls.h ++++ b/src/3rdparty/chromium/sandbox/linux/system_headers/linux_syscalls.h +@@ -10,6 +10,7 @@ + #define SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_ + + #include "build/build_config.h" ++#include + + #if defined(__x86_64__) + #include "sandbox/linux/system_headers/x86_64_linux_syscalls.h" +--- a/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc ++++ b/src/3rdparty/chromium/sandbox/policy/linux/bpf_renderer_policy_linux.cc +@@ -94,6 +94,9 @@ + case __NR_pwrite64: + case __NR_sched_get_priority_max: + case __NR_sched_get_priority_min: ++ case __NR_sched_getparam: ++ case __NR_sched_getscheduler: ++ case __NR_sched_setscheduler: + case __NR_sysinfo: + case __NR_times: + case __NR_uname: diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-stat.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-stat.patch new file mode 100644 index 00000000..5d80a8c7 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-stat.patch @@ -0,0 +1,14 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0008-musl-stat.patch + +--- a/src/3rdparty/chromium/base/files/file.h ++++ b/src/3rdparty/chromium/base/files/file.h +@@ -19,7 +19,8 @@ + #include "build/build_config.h" + + #if BUILDFLAG(IS_BSD) || BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_NACL) || \ +- BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) ++ BUILDFLAG(IS_FUCHSIA) || (BUILDFLAG(IS_ANDROID) && __ANDROID_API__ < 21) || \ ++ (defined(OS_LINUX) && !defined(__GLIBC__)) + struct stat; + namespace base { + typedef struct stat stat_wrapper_t; diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-systypes.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-systypes.patch new file mode 100644 index 00000000..f4e71e93 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-systypes.patch @@ -0,0 +1,11 @@ +--- a/src/3rdparty/chromium/base/third_party/symbolize/symbolize.h ++++ b/src/3rdparty/chromium/base/third_party/symbolize/symbolize.h +@@ -58,6 +58,8 @@ + #include "config.h" + #include "glog/logging.h" + ++#include ++ + #ifdef HAVE_SYMBOLIZE + + #if defined(__ELF__) // defined by gcc diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-temp-retry-failure.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-temp-retry-failure.patch new file mode 100644 index 00000000..23940dd8 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-temp-retry-failure.patch @@ -0,0 +1,21 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0002-temp-failure-retry.patch + +random glibc macro + +--- a/src/3rdparty/chromium/sandbox/linux/suid/process_util.h ++++ b/src/3rdparty/chromium/sandbox/linux/suid/process_util.h +@@ -11,6 +11,14 @@ + #include + #include + ++// Some additional functions ++# define TEMP_FAILURE_RETRY(expression) \ ++ (__extension__ \ ++ ({ long int __result; \ ++ do __result = (long int) (expression); \ ++ while (__result == -1L && errno == EINTR); \ ++ __result; })) ++ + // This adjusts /proc/process/oom_score_adj so the Linux OOM killer + // will prefer certain process types over others. The range for the + // adjustment is [-1000, 1000], with [0, 1000] being user accessible. diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-wtf-stacksize.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-wtf-stacksize.patch new file mode 100644 index 00000000..fd7b4fa2 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-musl-wtf-stacksize.patch @@ -0,0 +1,22 @@ +https://git.alpinelinux.org/aports/tree/testing/qt6-qtwebengine/0011-wtf-stacksize.patch + +--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc ++++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -29,7 +29,7 @@ + // FIXME: On Mac OSX and Linux, this method cannot estimate stack size + // correctly for the main thread. + +-#elif defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ ++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ + BUILDFLAG(IS_FUCHSIA) + // pthread_getattr_np() can fail if the thread is not invoked by + // pthread_create() (e.g., the main thread of blink_unittests). +@@ -97,7 +97,7 @@ + } + + void* GetStackStart() { +-#if defined(__GLIBC__) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ ++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_FREEBSD) || \ + BUILDFLAG(IS_FUCHSIA) + pthread_attr_t attr; + int error; diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.1-normalise-clipboard-permissions.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-normalise-clipboard-permissions.patch new file mode 100644 index 00000000..7caf2020 --- /dev/null +++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.1-normalise-clipboard-permissions.patch @@ -0,0 +1,99 @@ +Qt Upstream: https://code.qt.io/cgit/qt/qtwebengine.git/commit/?h=6.5&id=281174f5e010d819a49562b48b2c2067255a41c6 + +From 281174f5e010d819a49562b48b2c2067255a41c6 Mon Sep 17 00:00:00 2001 +From: Szabolcs David +Date: Fri, 19 May 2023 01:00:41 +0200 +Subject: Normalize clipboard permissions + +Handle clipboard read and write permissions the same way everywhere. + +Fixes: QTBUG-113579 +Change-Id: If1f271e8591c54f4ee2f935486502df19d5f6b3e +Reviewed-by: Allan Sandfeld Jensen +(cherry picked from commit 79e4a37668a9176373e81fe4fc8dfe29f6c8c37b) +Reviewed-by: Qt Cherry-pick Bot +--- + src/core/permission_manager_qt.cpp | 46 +++++++++++++++++++------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp +index 9d98c0592..28e1c981d 100644 +--- a/src/core/permission_manager_qt.cpp ++++ b/src/core/permission_manager_qt.cpp +@@ -84,6 +84,22 @@ static blink::mojom::PermissionStatus toBlink(ProfileAdapter::PermissionState re + } + } + ++static blink::mojom::PermissionStatus getStatusFromSettings(blink::PermissionType type, WebEngineSettings *settings) ++{ ++ switch (type) { ++ case blink::PermissionType::CLIPBOARD_READ_WRITE: ++ if (!settings->testAttribute(QWebEngineSettings::JavascriptCanPaste)) ++ return blink::mojom::PermissionStatus::DENIED; ++ Q_FALLTHROUGH(); ++ case blink::PermissionType::CLIPBOARD_SANITIZED_WRITE: ++ if (!settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard)) ++ return blink::mojom::PermissionStatus::DENIED; ++ return blink::mojom::PermissionStatus::GRANTED; ++ default: ++ return blink::mojom::PermissionStatus::ASK; ++ } ++} ++ + PermissionManagerQt::PermissionManagerQt() + : m_requestIdCount(0) + { +@@ -179,13 +195,8 @@ void PermissionManagerQt::RequestPermission(blink::PermissionType permission, + Q_ASSERT(contentsDelegate); + + ProfileAdapter::PermissionType permissionType = toQt(permission); +- if (permissionType == ProfileAdapter::ClipboardRead) { +- WebEngineSettings *settings = contentsDelegate->webEngineSettings(); +- if (settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard) +- && settings->testAttribute(QWebEngineSettings::JavascriptCanPaste)) +- std::move(callback).Run(blink::mojom::PermissionStatus::GRANTED); +- else +- std::move(callback).Run(blink::mojom::PermissionStatus::DENIED); ++ if (permissionType == ProfileAdapter::ClipboardRead || permissionType == ProfileAdapter::ClipboardWrite) { ++ std::move(callback).Run(getStatusFromSettings(permission, contentsDelegate->webEngineSettings())); + return; + } else if (!canRequestPermissionFor(permissionType)) { + std::move(callback).Run(blink::mojom::PermissionStatus::DENIED); +@@ -220,14 +231,9 @@ void PermissionManagerQt::RequestPermissions(const std::vectorwebEngineSettings(); +- if (settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard) +- && settings->testAttribute(QWebEngineSettings::JavascriptCanPaste)) +- result.push_back(blink::mojom::PermissionStatus::GRANTED); +- else +- result.push_back(blink::mojom::PermissionStatus::DENIED); +- } else { ++ else if (permissionType == ProfileAdapter::ClipboardRead || permissionType == ProfileAdapter::ClipboardWrite) ++ result.push_back(getStatusFromSettings(permission, contentsDelegate->webEngineSettings())); ++ else { + answerable = false; + break; + } +@@ -280,14 +286,8 @@ blink::mojom::PermissionStatus PermissionManagerQt::GetPermissionStatusForCurren + permission == blink::PermissionType::CLIPBOARD_SANITIZED_WRITE) { + WebContentsDelegateQt *delegate = static_cast( + content::WebContents::FromRenderFrameHost(render_frame_host)->GetDelegate()); +- if (!delegate->webEngineSettings()->testAttribute( +- QWebEngineSettings::JavascriptCanAccessClipboard)) +- return blink::mojom::PermissionStatus::DENIED; +- if (permission == blink::PermissionType::CLIPBOARD_READ_WRITE +- && !delegate->webEngineSettings()->testAttribute( +- QWebEngineSettings::JavascriptCanPaste)) +- return blink::mojom::PermissionStatus::DENIED; +- return blink::mojom::PermissionStatus::GRANTED; ++ Q_ASSERT(delegate); ++ return getStatusFromSettings(permission, delegate->webEngineSettings()); + } + + return GetPermissionStatus( +-- +cgit v1.2.3 + diff --git a/dev-qt/qtwebengine/metadata.xml b/dev-qt/qtwebengine/metadata.xml index cbcf0f7a..f447332f 100644 --- a/dev-qt/qtwebengine/metadata.xml +++ b/dev-qt/qtwebengine/metadata.xml @@ -14,8 +14,6 @@ Install the QWebEngineView plugin used to add widgets in dev-qt/designer forms that display web pages. Enable physical position determination via dev-qt/qtpositioning Combine source files to speed up build process. - Enable support for remote desktop and screen cast using media-video/pipewire - Use the system-wide media-video/ffmpeg instead of bundled. Use the system-wide dev-libs/icu instead of bundled. Enable QtWidgets support diff --git a/dev-qt/qtwebengine/qtwebengine-5.15.10_p20230505.ebuild b/dev-qt/qtwebengine/qtwebengine-5.15.10_p20230505.ebuild new file mode 100644 index 00000000..8447fc5e --- /dev/null +++ b/dev-qt/qtwebengine/qtwebengine-5.15.10_p20230505.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +PYTHON_REQ_USE="xml(+)" +inherit check-reqs estack flag-o-matic multiprocessing python-any-r1 qt5-build toolchain-funcs + +DESCRIPTION="Library for rendering dynamic web content in Qt5 C++ and QML applications" +HOMEPAGE="https://www.qt.io/" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86" + if [[ ${PV} == ${QT5_PV}_p* ]]; then + SRC_URI="https://dev.gentoo.org/~asturm/distfiles/${P/10_p/9_p}.tar.xz" + S="${WORKDIR}/${P/10_p/9_p}" + QT5_BUILD_DIR="${S}_build" + fi +else + EGIT_BRANCH="5.15" + EGIT_REPO_URI=( + "https://code.qt.io/qt/${QT5_MODULE}.git" + "https://github.com/qt/${QT5_MODULE}.git" + ) + inherit git-r3 +fi + +# ppc64 patchset based on https://github.com/chromium-ppc64le releases +SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${PN}-5.15.8_p20230313-patchset.tar.xz + ppc64? ( https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-5.15.2-r1-chromium87-ppc64le.tar.xz )" + +IUSE="alsa bindist designer geolocation +jumbo-build kerberos pulseaudio screencast +system-icu widgets" +REQUIRED_USE="designer? ( widgets )" + +RDEPEND=" + app-arch/snappy:= + dev-libs/glib:2 + dev-libs/nspr + dev-libs/nss + dev-libs/expat + dev-libs/libevent:= + dev-libs/libxml2[icu] + dev-libs/libxslt + dev-libs/re2:= + =dev-qt/qtcore-${QT5_PV}* + =dev-qt/qtdeclarative-${QT5_PV}* + =dev-qt/qtgui-${QT5_PV}* + =dev-qt/qtnetwork-${QT5_PV}* + =dev-qt/qtprintsupport-${QT5_PV}* + =dev-qt/qtwebchannel-${QT5_PV}*[qml] + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/lcms:2 + media-libs/libjpeg-turbo:= + media-libs/libpng:0= + >=media-libs/libvpx-1.5:=[svc(+)] + media-libs/libwebp:= + media-libs/opus + sys-apps/dbus + sys-apps/pciutils + sys-libs/zlib[minizip] + virtual/libudev + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXcursor + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXi + x11-libs/libxkbfile + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXScrnSaver + x11-libs/libXtst + alsa? ( media-libs/alsa-lib ) + designer? ( =dev-qt/designer-${QT5_PV}* ) + geolocation? ( =dev-qt/qtpositioning-${QT5_PV}* ) + kerberos? ( virtual/krb5 ) + pulseaudio? ( media-libs/libpulse ) + screencast? ( media-video/pipewire:= ) + system-icu? ( >=dev-libs/icu-69.1:= ) + widgets? ( + =dev-qt/qtdeclarative-${QT5_PV}*[widgets] + =dev-qt/qtwidgets-${QT5_PV}* + ) +" +DEPEND="${RDEPEND} + media-libs/libglvnd +" +BDEPEND="${PYTHON_DEPS} + dev-util/gperf + dev-util/ninja + dev-util/re2c + net-libs/nodejs[ssl] + sys-devel/bison + sys-devel/flex + ppc64? ( >=dev-util/gn-0.1807 ) +" + +PATCHES=( + "${WORKDIR}/${PN}-5.15.8_p20230313-patchset" + + # Patches for musl support + "${FILESDIR}"/${PN}-5.15.5_p20220618-qmake-remove-glibc-check.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mallinfo.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mojo-strncpy.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-resolv-compat.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-backtrace-execinfo.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-pvalloc-patch.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-linux-stack_util-stackstart.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-remove-decls-usage.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-msghdr-padding-initlist.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-canonicalize-filename.patch + "${FILESDIR}"/${PN}-5.15.10_p20230505-musl-lfs64.patch + ## runtime + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-sandbox.patch + + # Patch for clang 16 fix + "${FILESDIR}"/${PN}-5.15.10_p20230505-clang-16.patch +) + +qtwebengine_check-reqs() { + # bug #307861 + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." + ewarn "You may experience really long compilation times and/or increased memory usage." + ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." + fi + eshopts_pop + + [[ ${MERGE_TYPE} == binary ]] && return + + # (check-reqs added for bug #570534) + # + # Estimate the amount of RAM required + # Multiplier is *10 because Bash doesn't do floating point maths. + # Let's crudely assume ~2GB per compiler job for GCC. + local multiplier=20 + + # And call it ~1.5GB for Clang. + if tc-is-clang ; then + multiplier=15 + fi + + local CHECKREQS_DISK_BUILD="7G" + local CHECKREQS_DISK_USR="150M" + if ! has "distcc" ${FEATURES} ; then + # bug #830661 + # Not super realistic to come up with good estimates for distcc right now + local CHECKREQS_MEMORY=$(($(makeopts_jobs)*multiplier/10))G + fi + + check-reqs_${EBUILD_PHASE_FUNC} +} + +pkg_pretend() { + qtwebengine_check-reqs +} + +pkg_setup() { + qtwebengine_check-reqs + python-any-r1_pkg_setup +} + +src_unpack() { + case ${QT5_BUILD_TYPE} in + live) git-r3_src_unpack ;& + release) default ;; + esac +} + +src_prepare() { + # upstreamed, but not spinning new patchset just yet + rm "${WORKDIR}"/qtwebengine-5.15.8_p20230313-patchset/015-gcc13.patch || die + + if [[ ${PV} == ${QT5_PV}_p* ]]; then + # This is made from git, and for some reason will fail w/o .git directories. + mkdir -p .git src/3rdparty/chromium/.git || die + fi + # We need to make sure this integrates well into Qt 5.15.3 installation. + # Otherwise revdeps fail w/o heavy changes. This is the simplest way to do it. + # See also: https://www.qt.io/blog/building-qt-webengine-against-other-qt-versions + sed -E "/^MODULE_VERSION/s/5\.15\.[0-9]+/${QT5_PV}/" -i .qmake.conf || die + + # QTBUG-88657 - jumbo-build could still make trouble + if ! use jumbo-build; then + sed -i -e 's|use_jumbo_build=true|use_jumbo_build=false|' \ + src/buildtools/config/common.pri || die + fi + + # bug 620444 - ensure local headers are used + find "${S}" -type f -name "*.pr[fio]" | \ + xargs sed -i -e 's|INCLUDEPATH += |&$${QTWEBENGINE_ROOT}_build/include $${QTWEBENGINE_ROOT}/include |' || die + + if use system-icu; then + # Sanity check to ensure that bundled copy of ICU is not used. + # Whole src/3rdparty/chromium/third_party/icu directory cannot be deleted because + # src/3rdparty/chromium/third_party/icu/BUILD.gn is used by build system. + # If usage of headers of bundled copy of ICU occurs, then lists of shim headers in + # shim_headers("icui18n_shim") and shim_headers("icuuc_shim") in + # src/3rdparty/chromium/third_party/icu/BUILD.gn should be updated. + local file + while read file; do + echo "#error This file should not be used!" > "${file}" || die + done < <(find src/3rdparty/chromium/third_party/icu -type f "(" -name "*.c" -o -name "*.cpp" -o -name "*.h" ")" 2>/dev/null) + fi + + # src/3rdparty/gn fails with libc++ due to passing of `-static-libstdc++` + if tc-is-clang ; then + if has_version 'sys-devel/clang[default-libcxx(-)]' || has_version 'sys-devel/clang-common[default-libcxx(-)]' ; then + eapply "${FILESDIR}/${PN}-5.15.2_p20210521-clang-libc++.patch" + fi + fi + + qt_use_disable_config alsa webengine-alsa src/buildtools/config/linux.pri + qt_use_disable_config pulseaudio webengine-pulseaudio src/buildtools/config/linux.pri + + qt_use_disable_mod designer webenginewidgets src/plugins/plugins.pro + + qt_use_disable_mod widgets widgets src/src.pro + + qt5-build_src_prepare + + # we need to generate ppc64 stuff because upstream does not ship it yet + if use ppc64; then + einfo "Patching for ppc64le and generating build files" + eapply "${FILESDIR}/qtwebengine-5.15.2-enable-ppc64.patch" + pushd src/3rdparty/chromium > /dev/null || die + eapply -p0 "${WORKDIR}/${PN}-ppc64le" + popd > /dev/null || die + pushd src/3rdparty/chromium/third_party/libvpx > /dev/null || die + mkdir -vp source/config/linux/ppc64 || die + mkdir -p source/libvpx/test || die + touch source/libvpx/test/test.mk || die + # clang-format is used to re-format sources + # but we'd rather make it a no-op than introduce a clang dependency + # https://bugs.gentoo.org/849458 + clang-format() { : ; } + export -f clang-format || die + ./generate_gni.sh || die + popd >/dev/null || die + fi +} + +src_configure() { + export NINJA_PATH=/usr/bin/ninja + export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0) -v}" + + local myqmakeargs=( + -- + -no-build-qtpdf + -printing-and-pdf + -system-opus + -system-webp + $(qt_use alsa) + $(qt_use !bindist proprietary-codecs) + $(qt_use geolocation webengine-geolocation) + $(qt_use kerberos webengine-kerberos) + $(qt_use pulseaudio) + $(usex screencast -webengine-webrtc-pipewire '') + -qt-ffmpeg # bug 831487 + $(qt_use system-icu webengine-icu) + ) + qt5-build_src_configure +} + +src_install() { + qt5-build_src_install + + # bug 601472 + if [[ ! -f ${D}${QT5_LIBDIR}/libQt5WebEngine.so ]]; then + die "${CATEGORY}/${PF} failed to build anything. Please report to https://bugs.gentoo.org/" + fi +} + +pkg_preinst() { + elog "This version of Qt WebEngine is based on Chromium version 87.0.4280.144," + elog "with additional security fixes from newer versions. Extensive as it is, the" + elog "list of backports is impossible to evaluate, but always bound to be behind" + elog "Chromium's release schedule." + elog "In addition, various online services may deny service based on an outdated" + elog "user agent version (and/or other checks). Google is already known to do so." + elog + elog "tldr: Your web browsing experience will be compromised." +} diff --git a/dev-qt/qtwebengine/qtwebengine-5.15.5_p20220618.ebuild b/dev-qt/qtwebengine/qtwebengine-5.15.5_p20220618.ebuild deleted file mode 100644 index 83bf6999..00000000 --- a/dev-qt/qtwebengine/qtwebengine-5.15.5_p20220618.ebuild +++ /dev/null @@ -1,299 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{9,10} ) -PYTHON_REQ_USE="xml(+)" -inherit check-reqs estack flag-o-matic multiprocessing python-any-r1 qt5-build toolchain-funcs - -DESCRIPTION="Library for rendering dynamic web content in Qt5 C++ and QML applications" -HOMEPAGE="https://www.qt.io/" - -if [[ ${QT5_BUILD_TYPE} == release ]]; then - KEYWORDS="amd64 ~arm arm64 ~ppc64 x86" - if [[ ${PV} == ${QT5_PV}_p* ]]; then - SRC_URI="https://dev.gentoo.org/~asturm/distfiles/${P}.tar.xz" - S="${WORKDIR}/${P}" - QT5_BUILD_DIR="${S}_build" - fi -else - EGIT_BRANCH="5.15" - EGIT_REPO_URI=( - "https://code.qt.io/qt/${QT5_MODULE}.git" - "https://github.com/qt/${QT5_MODULE}.git" - ) - inherit git-r3 -fi - -# ppc64 patchset based on https://github.com/chromium-ppc64le releases -SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${PN}-5.15.2_p20211019-jumbo-build.patch.bz2 - https://dev.gentoo.org/~asturm/distfiles/${PN}-5.15.3_p20220406-patchset.tar.xz - ppc64? ( https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-5.15.2-r1-chromium87-ppc64le.tar.xz )" - -IUSE="alsa bindist designer geolocation +jumbo-build kerberos pulseaudio screencast +system-ffmpeg +system-icu widgets" -REQUIRED_USE="designer? ( widgets )" - -RDEPEND=" - app-arch/snappy:= - dev-libs/glib:2 - dev-libs/nspr - dev-libs/nss - dev-libs/expat - dev-libs/libevent:= - dev-libs/libxml2[icu] - dev-libs/libxslt - dev-libs/re2:= - =dev-qt/qtcore-${QT5_PV}* - =dev-qt/qtdeclarative-${QT5_PV}* - =dev-qt/qtgui-${QT5_PV}* - =dev-qt/qtnetwork-${QT5_PV}* - =dev-qt/qtprintsupport-${QT5_PV}* - =dev-qt/qtwebchannel-${QT5_PV}*[qml] - media-libs/fontconfig - media-libs/freetype - media-libs/harfbuzz:= - media-libs/lcms:2 - media-libs/libjpeg-turbo:= - media-libs/libpng:0= - >=media-libs/libvpx-1.5:=[svc(+)] - media-libs/libwebp:= - media-libs/opus - sys-apps/dbus - sys-apps/pciutils - sys-libs/zlib[minizip] - virtual/libudev - x11-libs/libdrm - x11-libs/libX11 - x11-libs/libXcomposite - x11-libs/libXcursor - x11-libs/libXdamage - x11-libs/libXext - x11-libs/libXfixes - x11-libs/libXi - x11-libs/libxkbfile - x11-libs/libXrandr - x11-libs/libXrender - x11-libs/libXScrnSaver - x11-libs/libXtst - alsa? ( media-libs/alsa-lib ) - designer? ( =dev-qt/designer-${QT5_PV}* ) - geolocation? ( =dev-qt/qtpositioning-${QT5_PV}* ) - kerberos? ( virtual/krb5 ) - pulseaudio? ( media-sound/pulseaudio:= ) - screencast? ( media-video/pipewire:= ) - system-ffmpeg? ( media-video/ffmpeg:0= ) - system-icu? ( >=dev-libs/icu-69.1:= ) - widgets? ( - =dev-qt/qtdeclarative-${QT5_PV}*[widgets] - =dev-qt/qtwidgets-${QT5_PV}* - ) -" -DEPEND="${RDEPEND} - media-libs/libglvnd -" -BDEPEND="${PYTHON_DEPS} - dev-util/gperf - dev-util/ninja - dev-util/re2c - net-libs/nodejs[ssl] - sys-devel/bison - sys-devel/flex - elibc_musl? ( sys-libs/queue-standalone ) - ppc64? ( >=dev-util/gn-0.1807 ) -" - -PATCHES=( - "${FILESDIR}/${PN}-5.15.2-disable-fatal-warnings.patch" # downstream, bug 695446 - "${FILESDIR}/${PN}-5.15.3_p20220505-extra-gn.patch" # downstream, bug 774186 - "${FILESDIR}/${PN}-5.15.2_p20210224-chromium-87-v8-icu68.patch" # downstream, bug 757606 - "${FILESDIR}/${PN}-5.15.2_p20210224-disable-git.patch" # downstream snapshot fix - "${FILESDIR}/${PN}-5.15.2_p20211015-pdfium-system-lcms2.patch" # by Debian, QTBUG-61746 - "${FILESDIR}/${PN}-5.15.3_p20220329-clang14.patch" # by FreeBSD, bug 836604 - "${FILESDIR}/${PN}-5.15.3_p20220406-gcc12-includes.patch" # by openSUSE, bug 840326 - "${WORKDIR}/${PN}-5.15.2_p20211019-jumbo-build.patch" # bug 813957 - "${WORKDIR}/${PN}-5.15.3_p20220406-patchset" # bug 698988 (py2--), pipewire-3 - "${FILESDIR}/${P}-fixup-CVE-2022-0796.patch" # bug 853097 - - # for musl libc - "${FILESDIR}"/${PN}-5.15.5_p20220618-qmake-remove-glibc-check.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mallinfo.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mojo-strncpy.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-resolv-compat.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-backtrace-execinfo.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-pvalloc-patch.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-linux-stack_util-stackstart.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-remove-decls-usage.patch - "${FILESDIR}"/${PN}-5.15.5_p20220618-msghdr-padding-initlist.patch - ## runtime - "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-sandbox.patch -) - -qtwebengine_check-reqs() { - # bug #307861 - eshopts_push -s extglob - if is-flagq '-g?(gdb)?([1-9])'; then - ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." - ewarn "You may experience really long compilation times and/or increased memory usage." - ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." - fi - eshopts_pop - - [[ ${MERGE_TYPE} == binary ]] && return - - # (check-reqs added for bug #570534) - # - # Estimate the amount of RAM required - # Multiplier is *10 because Bash doesn't do floating point maths. - # Let's crudely assume ~2GB per compiler job for GCC. - local multiplier=20 - - # And call it ~1.5GB for Clang. - if tc-is-clang ; then - multiplier=15 - fi - - local CHECKREQS_DISK_BUILD="7G" - local CHECKREQS_DISK_USR="150M" - if ! has "distcc" ${FEATURES} ; then - # bug #830661 - # Not super realistic to come up with good estimates for distcc right now - local CHECKREQS_MEMORY=$(($(makeopts_jobs)*multiplier/10))G - fi - - check-reqs_${EBUILD_PHASE_FUNC} -} - -pkg_pretend() { - qtwebengine_check-reqs -} - -pkg_setup() { - qtwebengine_check-reqs - python-any-r1_pkg_setup -} - -src_unpack() { - case ${QT5_BUILD_TYPE} in - live) git-r3_src_unpack ;& - release) default ;; - esac -} - -src_prepare() { - # Using a conditional patch here since QMake is deprecated - # by CMake in Qt6. A build system change would be prettier but - # this works just as well right now. - use elibc_musl && PATCHES+=( "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-canonicalize-filename.patch ) - if [[ ${PV} == ${QT5_PV}_p* ]]; then - # This is made from git, and for some reason will fail w/o .git directories. - mkdir -p .git src/3rdparty/chromium/.git || die - fi - # We need to make sure this integrates well into Qt 5.15.3 installation. - # Otherwise revdeps fail w/o heavy changes. This is the simplest way to do it. - # See also: https://www.qt.io/blog/building-qt-webengine-against-other-qt-versions - sed -E "/^MODULE_VERSION/s/5\.15\.[0-9]+/${QT5_PV}/" -i .qmake.conf || die - - # QTBUG-88657 - jumbo-build could still make trouble - if ! use jumbo-build; then - sed -i -e 's|use_jumbo_build=true|use_jumbo_build=false|' \ - src/buildtools/config/common.pri || die - fi - - # bug 620444 - ensure local headers are used - find "${S}" -type f -name "*.pr[fio]" | \ - xargs sed -i -e 's|INCLUDEPATH += |&$${QTWEBENGINE_ROOT}_build/include $${QTWEBENGINE_ROOT}/include |' || die - - if use system-icu; then - # Sanity check to ensure that bundled copy of ICU is not used. - # Whole src/3rdparty/chromium/third_party/icu directory cannot be deleted because - # src/3rdparty/chromium/third_party/icu/BUILD.gn is used by build system. - # If usage of headers of bundled copy of ICU occurs, then lists of shim headers in - # shim_headers("icui18n_shim") and shim_headers("icuuc_shim") in - # src/3rdparty/chromium/third_party/icu/BUILD.gn should be updated. - local file - while read file; do - echo "#error This file should not be used!" > "${file}" || die - done < <(find src/3rdparty/chromium/third_party/icu -type f "(" -name "*.c" -o -name "*.cpp" -o -name "*.h" ")" 2>/dev/null) - fi - - # src/3rdparty/gn fails with libc++ due to passing of `-static-libstdc++` - if tc-is-clang && has_version 'sys-devel/clang[default-libcxx]'; then - eapply "${FILESDIR}/${PN}-5.15.2_p20210521-clang-libc++.patch" - fi - - if use system-ffmpeg && has_version '>=media-video/ffmpeg-5'; then - eapply "${FILESDIR}/${PN}-5.15.3_p20220406-ffmpeg5.patch" # by Archlinux, bug 831437 - fi - - qt_use_disable_config alsa webengine-alsa src/buildtools/config/linux.pri - qt_use_disable_config pulseaudio webengine-pulseaudio src/buildtools/config/linux.pri - - qt_use_disable_mod designer webenginewidgets src/plugins/plugins.pro - - qt_use_disable_mod widgets widgets src/src.pro - - qt5-build_src_prepare - - # we need to generate ppc64 stuff because upstream does not ship it yet - if use ppc64; then - einfo "Patching for ppc64le and generating build files" - eapply "${FILESDIR}/qtwebengine-5.15.2-enable-ppc64.patch" - pushd src/3rdparty/chromium > /dev/null || die - eapply -p0 "${WORKDIR}/${PN}-ppc64le" - popd > /dev/null || die - pushd src/3rdparty/chromium/third_party/libvpx > /dev/null || die - mkdir -vp source/config/linux/ppc64 || die - mkdir -p source/libvpx/test || die - touch source/libvpx/test/test.mk || die - # clang-format is used to re-format sources - # but we'd rather make it a no-op than introduce a clang dependency - # https://bugs.gentoo.org/849458 - clang-format() { : ; } - export -f clang-format || die - ./generate_gni.sh || die - popd >/dev/null || die - fi -} - -src_configure() { - export NINJA_PATH=/usr/bin/ninja - export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0) -v}" - - local myqmakeargs=( - -- - -no-build-qtpdf - -printing-and-pdf - -system-opus - -system-webp - $(qt_use alsa) - $(qt_use !bindist proprietary-codecs) - $(qt_use geolocation webengine-geolocation) - $(qt_use kerberos webengine-kerberos) - $(qt_use pulseaudio) - $(usex screencast -webengine-webrtc-pipewire '') - $(usex system-ffmpeg -system-ffmpeg -qt-ffmpeg) - $(qt_use system-icu webengine-icu) - ) - qt5-build_src_configure -} - -src_install() { - qt5-build_src_install - - # bug 601472 - if [[ ! -f ${D}${QT5_LIBDIR}/libQt5WebEngine.so ]]; then - die "${CATEGORY}/${PF} failed to build anything. Please report to https://bugs.gentoo.org/" - fi -} - -pkg_preinst() { - elog "This version of Qt WebEngine is based on Chromium version 87.0.4280.144," - elog "with additional security fixes from newer versions. Extensive as it is, the" - elog "list of backports is impossible to evaluate, but always bound to be behind" - elog "Chromium's release schedule." - elog "In addition, various online services may deny service based on an outdated" - elog "user agent version (and/or other checks). Google is already known to do so." - elog - elog "tldr: Your web browsing experience will be compromised." -} diff --git a/dev-qt/qtwebengine/qtwebengine-5.15.9_p20230505.ebuild b/dev-qt/qtwebengine/qtwebengine-5.15.9_p20230505.ebuild new file mode 100644 index 00000000..c46842d7 --- /dev/null +++ b/dev-qt/qtwebengine/qtwebengine-5.15.9_p20230505.ebuild @@ -0,0 +1,289 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..11} ) +PYTHON_REQ_USE="xml(+)" +inherit check-reqs estack flag-o-matic multiprocessing python-any-r1 qt5-build toolchain-funcs + +DESCRIPTION="Library for rendering dynamic web content in Qt5 C++ and QML applications" +HOMEPAGE="https://www.qt.io/" + +if [[ ${QT5_BUILD_TYPE} == release ]]; then + KEYWORDS="amd64 ~arm arm64 ~ppc64 ~x86" + if [[ ${PV} == ${QT5_PV}_p* ]]; then + SRC_URI="https://dev.gentoo.org/~asturm/distfiles/${P}.tar.xz" + S="${WORKDIR}/${P}" + QT5_BUILD_DIR="${S}_build" + fi +else + EGIT_BRANCH="5.15" + EGIT_REPO_URI=( + "https://code.qt.io/qt/${QT5_MODULE}.git" + "https://github.com/qt/${QT5_MODULE}.git" + ) + inherit git-r3 +fi + +# ppc64 patchset based on https://github.com/chromium-ppc64le releases +SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${PN}-5.15.8_p20230313-patchset.tar.xz + ppc64? ( https://dev.gentoo.org/~gyakovlev/distfiles/${PN}-5.15.2-r1-chromium87-ppc64le.tar.xz )" + +IUSE="alsa bindist designer geolocation +jumbo-build kerberos pulseaudio screencast +system-icu widgets" +REQUIRED_USE="designer? ( widgets )" + +RDEPEND=" + app-arch/snappy:= + dev-libs/glib:2 + dev-libs/nspr + dev-libs/nss + dev-libs/expat + dev-libs/libevent:= + dev-libs/libxml2[icu] + dev-libs/libxslt + dev-libs/re2:= + =dev-qt/qtcore-${QT5_PV}* + =dev-qt/qtdeclarative-${QT5_PV}* + =dev-qt/qtgui-${QT5_PV}* + =dev-qt/qtnetwork-${QT5_PV}* + =dev-qt/qtprintsupport-${QT5_PV}* + =dev-qt/qtwebchannel-${QT5_PV}*[qml] + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/lcms:2 + media-libs/libjpeg-turbo:= + media-libs/libpng:0= + >=media-libs/libvpx-1.5:=[svc(+)] + media-libs/libwebp:= + media-libs/opus + sys-apps/dbus + sys-apps/pciutils + sys-libs/zlib[minizip] + virtual/libudev + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXcursor + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXi + x11-libs/libxkbfile + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXScrnSaver + x11-libs/libXtst + alsa? ( media-libs/alsa-lib ) + designer? ( =dev-qt/designer-${QT5_PV}* ) + geolocation? ( =dev-qt/qtpositioning-${QT5_PV}* ) + kerberos? ( virtual/krb5 ) + pulseaudio? ( media-libs/libpulse ) + screencast? ( media-video/pipewire:= ) + system-icu? ( >=dev-libs/icu-69.1:= ) + widgets? ( + =dev-qt/qtdeclarative-${QT5_PV}*[widgets] + =dev-qt/qtwidgets-${QT5_PV}* + ) +" +DEPEND="${RDEPEND} + media-libs/libglvnd +" +BDEPEND="${PYTHON_DEPS} + dev-util/gperf + dev-util/ninja + dev-util/re2c + net-libs/nodejs[ssl] + sys-devel/bison + sys-devel/flex + ppc64? ( >=dev-util/gn-0.1807 ) +" + +PATCHES=( + "${WORKDIR}/${PN}-5.15.8_p20230313-patchset" + + # Patches for musl support + "${FILESDIR}"/${PN}-5.15.5_p20220618-qmake-remove-glibc-check.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mallinfo.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-mojo-strncpy.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-resolv-compat.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-backtrace-execinfo.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-pvalloc-patch.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-linux-stack_util-stackstart.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-remove-decls-usage.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-msghdr-padding-initlist.patch + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-canonicalize-filename.patch + "${FILESDIR}"/${PN}-5.15.10_p20230505-musl-lfs64.patch + ## runtime + "${FILESDIR}"/${PN}-5.15.5_p20220618-musl-sandbox.patch + + # Patch for clang 16 fix + "${FILESDIR}"/${PN}-5.15.10_p20230505-clang-16.patch +) + +qtwebengine_check-reqs() { + # bug #307861 + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." + ewarn "You may experience really long compilation times and/or increased memory usage." + ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." + fi + eshopts_pop + + [[ ${MERGE_TYPE} == binary ]] && return + + # (check-reqs added for bug #570534) + # + # Estimate the amount of RAM required + # Multiplier is *10 because Bash doesn't do floating point maths. + # Let's crudely assume ~2GB per compiler job for GCC. + local multiplier=20 + + # And call it ~1.5GB for Clang. + if tc-is-clang ; then + multiplier=15 + fi + + local CHECKREQS_DISK_BUILD="7G" + local CHECKREQS_DISK_USR="150M" + if ! has "distcc" ${FEATURES} ; then + # bug #830661 + # Not super realistic to come up with good estimates for distcc right now + local CHECKREQS_MEMORY=$(($(makeopts_jobs)*multiplier/10))G + fi + + check-reqs_${EBUILD_PHASE_FUNC} +} + +pkg_pretend() { + qtwebengine_check-reqs +} + +pkg_setup() { + qtwebengine_check-reqs + python-any-r1_pkg_setup +} + +src_unpack() { + case ${QT5_BUILD_TYPE} in + live) git-r3_src_unpack ;& + release) default ;; + esac +} + +src_prepare() { + # upstreamed, but not spinning new patchset just yet + rm "${WORKDIR}"/qtwebengine-5.15.8_p20230313-patchset/015-gcc13.patch || die + + if [[ ${PV} == ${QT5_PV}_p* ]]; then + # This is made from git, and for some reason will fail w/o .git directories. + mkdir -p .git src/3rdparty/chromium/.git || die + fi + # We need to make sure this integrates well into Qt 5.15.3 installation. + # Otherwise revdeps fail w/o heavy changes. This is the simplest way to do it. + # See also: https://www.qt.io/blog/building-qt-webengine-against-other-qt-versions + sed -E "/^MODULE_VERSION/s/5\.15\.[0-9]+/${QT5_PV}/" -i .qmake.conf || die + + # QTBUG-88657 - jumbo-build could still make trouble + if ! use jumbo-build; then + sed -i -e 's|use_jumbo_build=true|use_jumbo_build=false|' \ + src/buildtools/config/common.pri || die + fi + + # bug 620444 - ensure local headers are used + find "${S}" -type f -name "*.pr[fio]" | \ + xargs sed -i -e 's|INCLUDEPATH += |&$${QTWEBENGINE_ROOT}_build/include $${QTWEBENGINE_ROOT}/include |' || die + + if use system-icu; then + # Sanity check to ensure that bundled copy of ICU is not used. + # Whole src/3rdparty/chromium/third_party/icu directory cannot be deleted because + # src/3rdparty/chromium/third_party/icu/BUILD.gn is used by build system. + # If usage of headers of bundled copy of ICU occurs, then lists of shim headers in + # shim_headers("icui18n_shim") and shim_headers("icuuc_shim") in + # src/3rdparty/chromium/third_party/icu/BUILD.gn should be updated. + local file + while read file; do + echo "#error This file should not be used!" > "${file}" || die + done < <(find src/3rdparty/chromium/third_party/icu -type f "(" -name "*.c" -o -name "*.cpp" -o -name "*.h" ")" 2>/dev/null) + fi + + # src/3rdparty/gn fails with libc++ due to passing of `-static-libstdc++` + if tc-is-clang ; then + if has_version 'sys-devel/clang[default-libcxx(-)]' || has_version 'sys-devel/clang-common[default-libcxx(-)]' ; then + eapply "${FILESDIR}/${PN}-5.15.2_p20210521-clang-libc++.patch" + fi + fi + + qt_use_disable_config alsa webengine-alsa src/buildtools/config/linux.pri + qt_use_disable_config pulseaudio webengine-pulseaudio src/buildtools/config/linux.pri + + qt_use_disable_mod designer webenginewidgets src/plugins/plugins.pro + + qt_use_disable_mod widgets widgets src/src.pro + + qt5-build_src_prepare + + # we need to generate ppc64 stuff because upstream does not ship it yet + if use ppc64; then + einfo "Patching for ppc64le and generating build files" + eapply "${FILESDIR}/qtwebengine-5.15.2-enable-ppc64.patch" + pushd src/3rdparty/chromium > /dev/null || die + eapply -p0 "${WORKDIR}/${PN}-ppc64le" + popd > /dev/null || die + pushd src/3rdparty/chromium/third_party/libvpx > /dev/null || die + mkdir -vp source/config/linux/ppc64 || die + mkdir -p source/libvpx/test || die + touch source/libvpx/test/test.mk || die + # clang-format is used to re-format sources + # but we'd rather make it a no-op than introduce a clang dependency + # https://bugs.gentoo.org/849458 + clang-format() { : ; } + export -f clang-format || die + ./generate_gni.sh || die + popd >/dev/null || die + fi +} + +src_configure() { + export NINJA_PATH=/usr/bin/ninja + export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs "${MAKEOPTS}" 999) -l$(makeopts_loadavg "${MAKEOPTS}" 0) -v}" + + local myqmakeargs=( + -- + -no-build-qtpdf + -printing-and-pdf + -system-opus + -system-webp + $(qt_use alsa) + $(qt_use !bindist proprietary-codecs) + $(qt_use geolocation webengine-geolocation) + $(qt_use kerberos webengine-kerberos) + $(qt_use pulseaudio) + $(usex screencast -webengine-webrtc-pipewire '') + -qt-ffmpeg # bug 831487 + $(qt_use system-icu webengine-icu) + ) + qt5-build_src_configure +} + +src_install() { + qt5-build_src_install + + # bug 601472 + if [[ ! -f ${D}${QT5_LIBDIR}/libQt5WebEngine.so ]]; then + die "${CATEGORY}/${PF} failed to build anything. Please report to https://bugs.gentoo.org/" + fi +} + +pkg_preinst() { + elog "This version of Qt WebEngine is based on Chromium version 87.0.4280.144," + elog "with additional security fixes from newer versions. Extensive as it is, the" + elog "list of backports is impossible to evaluate, but always bound to be behind" + elog "Chromium's release schedule." + elog "In addition, various online services may deny service based on an outdated" + elog "user agent version (and/or other checks). Google is already known to do so." + elog + elog "tldr: Your web browsing experience will be compromised." +} diff --git a/dev-qt/qtwebengine/qtwebengine-6.5.1.ebuild b/dev-qt/qtwebengine/qtwebengine-6.5.1.ebuild new file mode 100644 index 00000000..59c53e8d --- /dev/null +++ b/dev-qt/qtwebengine/qtwebengine-6.5.1.ebuild @@ -0,0 +1,275 @@ +# Copyright 2021-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +PYTHON_REQ_USE="xml(+)" +CHROMIUM_VER="108.0.5359.181" +CHROMIUM_PATCHES_VER="112.0.5615.138" + +inherit check-reqs estack flag-o-matic multiprocessing python-any-r1 qt6-build toolchain-funcs + +DESCRIPTION="Library for rendering dynamic web content in Qt6 C++ and QML applications" + +if [[ ${QT6_BUILD_TYPE} == release ]]; then + KEYWORDS="~amd64" +fi + +IUSE=" + alsa bindist designer geolocation +jumbo-build kerberos pulseaudio screencast + +system-icu widgets +" +REQUIRED_USE="designer? ( widgets )" + +BDEPEND=" + $(python_gen_any_dep 'dev-python/html5lib[${PYTHON_USEDEP}]') + dev-util/gperf + dev-util/ninja + dev-util/re2c + net-libs/nodejs[ssl] + sys-devel/bison + sys-devel/flex +" +RDEPEND=" + app-arch/snappy:= + dev-libs/glib:2 + dev-libs/nspr + dev-libs/nss + dev-libs/expat + dev-libs/libevent:= + dev-libs/libxml2[icu] + dev-libs/libxslt + dev-libs/re2:= + =dev-qt/qtdeclarative-${PV}* + =dev-qt/qtwebchannel-${PV}* + media-libs/fontconfig + media-libs/freetype + media-libs/harfbuzz:= + media-libs/lcms:2 + media-libs/libjpeg-turbo:= + media-libs/libpng:= + >=media-libs/libvpx-1.5:=[svc(+)] + media-libs/libwebp:= + media-libs/openjpeg:2= + media-libs/opus + sys-apps/dbus + sys-apps/pciutils + sys-libs/zlib[minizip] + virtual/libudev + x11-libs/libdrm + x11-libs/libX11 + x11-libs/libXcomposite + x11-libs/libXcursor + x11-libs/libxcb:= + x11-libs/libXdamage + x11-libs/libXext + x11-libs/libXfixes + x11-libs/libXi + x11-libs/libxkbcommon + x11-libs/libxkbfile + x11-libs/libXrandr + x11-libs/libXrender + x11-libs/libXScrnSaver + x11-libs/libxshmfence:= + x11-libs/libXtst + alsa? ( media-libs/alsa-lib ) + geolocation? ( =dev-qt/qtpositioning-${PV}* ) + kerberos? ( virtual/krb5 ) + pulseaudio? ( media-libs/libpulse:= ) + screencast? ( media-video/pipewire:= ) + system-icu? ( >=dev-libs/icu-69.1:= ) + widgets? ( + =dev-qt/qtbase-${PV}*[widgets] + ) +" +DEPEND="${RDEPEND} + media-libs/libglvnd +" + +PATCHES=( + "${FILESDIR}/${PN}-6.5.1-normalise-clipboard-permissions.patch" + + # Patches for musl support + "${FILESDIR}/${PN}-6.5.1-musl-disable-glibc-check.patch" + "${FILESDIR}/${PN}-6.5.1-musl-temp-retry-failure.patch" + "${FILESDIR}/${PN}-6.5.1-musl-mallinfo.patch" + "${FILESDIR}/${PN}-6.5.1-musl-crashpad.patch" + "${FILESDIR}/${PN}-6.5.1-musl-no-execinfo.patch" + "${FILESDIR}/${PN}-6.5.1-musl-resolve.patch" + "${FILESDIR}/${PN}-6.5.1-musl-stat.patch" + "${FILESDIR}/${PN}-6.5.1-musl-close.patch" + "${FILESDIR}/${PN}-6.5.1-musl-canonicalize-file-name.patch" + "${FILESDIR}/${PN}-6.5.1-musl-wtf-stacksize.patch" + "${FILESDIR}/${PN}-6.5.1-musl-missing-includes.patch" + "${FILESDIR}/${PN}-6.5.1-musl-default-pthread-stacksize.patch" + "${FILESDIR}/${PN}-6.5.1-musl-fix-narrowing-cast.patch" + "${FILESDIR}/${PN}-6.5.1-musl-systypes.patch" + "${FILESDIR}/${PN}-6.5.1-musl-lfs64.patch" + "${FILESDIR}/${PN}-6.5.1-musl-remove-decls-usage.patch" + ## runtime + "${FILESDIR}/${PN}-6.5.1-musl-sandbox.patch" +) + +python_check_deps() { + python_has_version "dev-python/html5lib[${PYTHON_USEDEP}]" +} + +qtwebengine_check-reqs() { + # bug #307861 + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." + ewarn "You may experience really long compilation times and/or increased memory usage." + ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." + fi + eshopts_pop + + [[ ${MERGE_TYPE} == binary ]] && return + + # (check-reqs added for bug #570534) + # + # Estimate the amount of RAM required + # Multiplier is *10 because Bash doesn't do floating point maths. + # Let's crudely assume ~2GB per compiler job for GCC. + local multiplier=20 + + # And call it ~1.5GB for Clang. + if tc-is-clang ; then + multiplier=15 + fi + + local CHECKREQS_DISK_BUILD="7G" + local CHECKREQS_DISK_USR="150M" + if ! has "distcc" ${FEATURES} ; then + # bug #830661 + # Not super realistic to come up with good estimates for distcc right now + local CHECKREQS_MEMORY=$(($(makeopts_jobs)*multiplier/10))G + fi + + check-reqs_${EBUILD_PHASE_FUNC} +} + +pkg_pretend() { + qtwebengine_check-reqs +} + +pkg_setup() { + qtwebengine_check-reqs + python-any-r1_pkg_setup +} + +pkg_preinst() { + elog "This version of Qt WebEngine is based on Chromium version ${CHROMIUM_VER}, with" + elog "additional security fixes up to ${CHROMIUM_PATCHES_VER}. Extensive as it is, the" + elog "list of backports is impossible to evaluate, but always bound to be behind" + elog "Chromium's release schedule." + elog "In addition, various online services may deny service based on an outdated" + elog "user agent version (and/or other checks). Google is already known to do so." + elog + elog "tldr: Your web browsing experience will be compromised." +} + +src_unpack() { + # bug 307861 + eshopts_push -s extglob + if is-flagq '-g?(gdb)?([1-9])'; then + ewarn + ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)." + ewarn "You may experience really long compilation times and/or increased memory usage." + ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug." + ewarn + fi + eshopts_pop + + case ${QT6_BUILD_TYPE} in + live) git-r3_src_unpack ;& + release) default ;; + esac +} + +src_prepare() { + # src/3rdparty/gn fails with libc++ due to passing of `-static-libstdc++` + if tc-is-clang ; then + if has_version 'sys-devel/clang[default-libcxx(-)]' || has_version 'sys-devel/clang-common[default-libcxx(-)]' ; then + eapply "${FILESDIR}/${PN}-6.5.1-clang-libc++.patch" + fi + fi + + # bug 620444 - ensure local headers are used + find . -type f -name "*.pr[fio]" -exec \ + sed -i -e 's|INCLUDEPATH += |&$${QTWEBENGINE_ROOT}_build/include $${QTWEBENGINE_ROOT}/include |' {} + || die + + if use system-icu; then + # Sanity check to ensure that bundled copy of ICU is not used. + # Whole src/3rdparty/chromium/third_party/icu directory cannot be deleted because + # src/3rdparty/chromium/third_party/icu/BUILD.gn is used by build system. + # If usage of headers of bundled copy of ICU occurs, then lists of shim headers in + # shim_headers("icui18n_shim") and shim_headers("icuuc_shim") in + # src/3rdparty/chromium/third_party/icu/BUILD.gn should be updated. + local file + while read file; do + echo "#error This file should not be used!" > "${file}" || die + done < <(find src/3rdparty/chromium/third_party/icu -type f "(" -name "*.c" -o -name "*.cpp" -o -name "*.h" ")" 2>/dev/null) + fi + + qt6-build_src_prepare +} + +src_configure() { + export NINJA_PATH="${BROOT}"/usr/bin/ninja + export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs) -l$(makeopts_loadavg "${MAKEOPTS}" 0) -v}" + + local mycmakeargs=( + #-DQT_FEATURE_accessibility=off + #-DQT_FEATURE_force_asserts=off + #-DQT_FEATURE_opengl=off + #-DQT_FEATURE_printer=off + -DQT_FEATURE_qtpdf_build=off + -DQT_FEATURE_qtpdf_quick_build=off + -DQT_FEATURE_qtpdf_widgets_build=off + -DQT_FEATURE_qtwebengine_build=on + -DQT_FEATURE_qtwebengine_quick_build=on + -DQT_FEATURE_qtwebengine_widgets_build=on + #-DQT_FEATURE_ssl=off + #-DQT_FEATURE_static=off + #-DQT_FEATURE_system_zlib=off + #-DQT_FEATURE_system_png=off + #-DQT_FEATURE_system_jpeg=off + #-DQT_FEATURE_system_freetype=off + #-DQT_FEATURE_system_harfbuzz=off + #-DQT_FEATURE_use_gold_linker=off + #-DQT_FEATURE_use_lld_linker=off + -DQT_FEATURE_webengine_embedded_build=off + -DQT_FEATURE_webengine_extensions=on + #-DQT_FEATURE_webengine_full_debug_info=$(usex debug) + -DQT_FEATURE_webengine_geolocation=$(usex geolocation on off) + -DQT_FEATURE_webengine_jumbo_build=$(usex jumbo-build) + #-DQT_FEATURE_webengine_jumbo_file_merge_limit + -DQT_FEATURE_webengine_kerberos=$(usex kerberos on off) + -DQT_FEATURE_webengine_native_spellchecker=off + -DQT_FEATURE_webengine_ozone_x11=on + -DQT_FEATURE_webengine_pepper_plugins=on + -DQT_FEATURE_webengine_proprietary_codecs=$(usex bindist off on) + -DQT_FEATURE_webengine_printing_and_pdf=on + -DQT_FEATURE_webengine_sanitizer=on + -DQT_FEATURE_webengine_spellchecker=on + -DQT_FEATURE_webengine_system_opus=on + -DQT_FEATURE_webengine_system_libwebp=on + -DQT_FEATURE_webengine_system_alsa=$(usex alsa on off) + -DQT_FEATURE_webengine_system_ffmpeg=off # https://bugs.gentoo.org/831487 + -DQT_FEATURE_webengine_system_icu=$(usex system-icu) + -DQT_FEATURE_webengine_system_libevent=on + -DQT_FEATURE_webengine_system_libopenjpeg2=on + -DQT_FEATURE_webengine_system_libpci=on + -DQT_FEATURE_webengine_system_libpng=on + -DQT_FEATURE_webengine_system_pulseaudio=$(usex pulseaudio on off) + -DQT_FEATURE_webengine_system_zlib=on + -DQT_FEATURE_webengine_webchannel=on + -DQT_FEATURE_webengine_webrtc=on + -DQT_FEATURE_webengine_webrtc_pipewire=$(usex screencast on off) + #-DQT_FEATURE_xcb=off + ) + + qt6-build_src_configure +} -- cgit v1.2.3-65-gdbad