aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-qt/qtwebengine/Manifest2
-rw-r--r--dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch42
-rw-r--r--dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch169
-rw-r--r--dev-qt/qtwebengine/metadata.xml13
-rw-r--r--dev-qt/qtwebengine/qtwebengine-5.15.3_p20220406.ebuild274
5 files changed, 492 insertions, 8 deletions
diff --git a/dev-qt/qtwebengine/Manifest b/dev-qt/qtwebengine/Manifest
index f69e1d9..dc9b5d7 100644
--- a/dev-qt/qtwebengine/Manifest
+++ b/dev-qt/qtwebengine/Manifest
@@ -2,3 +2,5 @@ DIST qtwebengine-5.15.2-r1-chromium87-ppc64le.tar.xz 28784 BLAKE2B aa101d14446f3
DIST qtwebengine-5.15.2_p20211019-jumbo-build.patch.bz2 2930 BLAKE2B fca1d1406874d04eafb64bb4d8730512a6307ba44fb99d76f428ca1bd4a303758e0c3bd8f92a59f7bcf62e5b767c5a8ed239028bdb74ad7a8b62abf88d38c101 SHA512 61cbfbe4ff340b75ea8d356e031e932ac03fe65dd009999ff897ca4b0185d1d989490daf75ffeaaabb3e92c870c11c7ff8ad2cd6372f5363b3d774b8ecca6d89
DIST qtwebengine-5.15.3-riscv-0.tar.xz 189688 BLAKE2B 987b09aa79d1bb425e23a9d4573d46dc1f470b7abf169a446317b68b42a131fa9fb3f1839d0589858a91949759ec1909b0488deeb40863a362fd28307c7b5bb0 SHA512 1e6aaa13118eaba839e82482f30ba14843bcd67bc4c42a38bf09e1f89bb53175dedcf74ddbd68ea9821dc36645f23de3e63211de2a82962ae6ada49f520bc4f6
DIST qtwebengine-5.15.3_p20220310.tar.xz 319290976 BLAKE2B 0a0e74e7d94e59d81687ceb4d791034d43daaeef887894acedc2d2568a8c74e4b7303440518d377c16de21a546e2609fdd89ab64c0664c230df4657cec9d399c SHA512 e57c7c51d0f27d116d2dc80043cb563a1dbce2357221ba87ae3c3b0e8c781e3ef09f69b8f6f20fcb7d85d596ae312b2f85ebc35ba7ee283ab30caa8f796fe2d6
+DIST qtwebengine-5.15.3_p20220406-patchset.tar.xz 35480 BLAKE2B ce6aeebbb3255196611130d04ee7a3907ba45d6d2a283f2433e2176cf67e473e74137b180de0a9998762cc54439bb06825815e81e9f95f9413ce2956ac9308b7 SHA512 47e29a1429dce2db324929af91c8ef8421c75ae48f5a491db71b434f8017a5b1e7475e9938989e331e8e012220852848565242e09747892e1a8a8d3ab7386840
+DIST qtwebengine-5.15.3_p20220406.tar.xz 318979648 BLAKE2B 3aba9293c52f96379cfe37c418c7a29a28e2fc0a8526d35452bef28c03b101054131d0daf75f07f058f80fbd42678b6bd24733573318169908f1d5e18d147db8 SHA512 80bf51b547cc8e15473652327a0cb753211911e8c98b1cb8b2cd696af923e79eccdc74aa4b68b6184c74ceb3a9bd708c7313f48eab4381ebeaac8192daa163b6
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
new file mode 100644
index 0000000..c1a98d0
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220329-clang14.patch
@@ -0,0 +1,42 @@
+From 0825e7bc64e47d87e1f1026cc80c933550f114f5 Mon Sep 17 00:00:00 2001
+From: Dimitry Andric <dim@FreeBSD.org>
+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
new file mode 100644
index 0000000..15c1926
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.3_p20220406-ffmpeg5.patch
@@ -0,0 +1,169 @@
+From 05f6ffbbce0a2aad01dc05d682cbe4a1ec44fad5 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+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 <libavformat/avformat.h>
+ #include <libavformat/avio.h>
+ #include <libavutil/avutil.h>
++#include <libavutil/channel_layout.h>
+ #include <libavutil/imgutils.h>
+ #include <libavutil/log.h>
+ #include <libavutil/mastering_display_metadata.h>
+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<DecoderBuffer> 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<const uint32_t*>(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<FFmpegDecodingLoop>(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/metadata.xml b/dev-qt/qtwebengine/metadata.xml
index fe0b26e..cbcf0f7 100644
--- a/dev-qt/qtwebengine/metadata.xml
+++ b/dev-qt/qtwebengine/metadata.xml
@@ -11,15 +11,12 @@
<name>Georgy Yakovlev</name>
</maintainer>
<use>
- <flag name="designer">Install the QWebEngineView plugin used to add widgets in
- <pkg>dev-qt/designer</pkg> forms that display web pages.</flag>
- <flag name="geolocation">Enable physical position determination
- via <pkg>dev-qt/qtpositioning</pkg></flag>
+ <flag name="designer">Install the QWebEngineView plugin used to add widgets in <pkg>dev-qt/designer</pkg> forms that display web pages.</flag>
+ <flag name="geolocation">Enable physical position determination via <pkg>dev-qt/qtpositioning</pkg></flag>
<flag name="jumbo-build">Combine source files to speed up build process.</flag>
- <flag name="system-ffmpeg">Use the system-wide <pkg>media-video/ffmpeg</pkg>
- instead of bundled.</flag>
- <flag name="system-icu">Use the system-wide <pkg>dev-libs/icu</pkg>
- instead of bundled.</flag>
+ <flag name="screencast">Enable support for remote desktop and screen cast using <pkg>media-video/pipewire</pkg></flag>
+ <flag name="system-ffmpeg">Use the system-wide <pkg>media-video/ffmpeg</pkg> instead of bundled.</flag>
+ <flag name="system-icu">Use the system-wide <pkg>dev-libs/icu</pkg> instead of bundled.</flag>
<flag name="widgets">Enable QtWidgets support</flag>
</use>
<upstream>
diff --git a/dev-qt/qtwebengine/qtwebengine-5.15.3_p20220406.ebuild b/dev-qt/qtwebengine/qtwebengine-5.15.3_p20220406.ebuild
new file mode 100644
index 0000000..2cc0403
--- /dev/null
+++ b/dev-qt/qtwebengine/qtwebengine-5.15.3_p20220406.ebuild
@@ -0,0 +1,274 @@
+# 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
+ ppc64? ( >=dev-util/gn-0.1807 )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-5.15.2-disable-fatal-warnings.patch" # downstream, bug 695446
+ "${FILESDIR}/${PN}-5.15.2-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
+ "${WORKDIR}/${PN}-5.15.2_p20211019-jumbo-build.patch" # bug 813957
+ "${WORKDIR}/${PN}-5.15.3_p20220406-patchset" # bug 698988 (py2--), pipewire-3
+)
+
+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() {
+ 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
+ ./generate_gni.sh || die
+ popd >/dev/null || die
+ fi
+}
+
+src_configure() {
+ export NINJA_PATH=/usr/bin/ninja
+ export NINJAFLAGS="${NINJAFLAGS:--j$(makeopts_jobs) -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, with"
+ elog "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."
+}