Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libqt5-qtwebengine for openSUSE:Factory checked in at 2022-09-26 18:47:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt5-qtwebengine (Old) and /work/SRC/openSUSE:Factory/.libqt5-qtwebengine.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtwebengine" Mon Sep 26 18:47:41 2022 rev:83 rq:1005868 version:5.15.10 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt5-qtwebengine/libqt5-qtwebengine.changes 2022-08-09 15:26:02.081227851 +0200 +++ /work/SRC/openSUSE:Factory/.libqt5-qtwebengine.new.2275/libqt5-qtwebengine.changes 2022-09-26 18:47:44.624002102 +0200 @@ -1,0 +2,9 @@ +Fri Sep 23 18:01:11 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Add patches to build with python 3, ffmpeg 5 and pipewire 0.3: + * qtwebengine-ffmpeg5.patch + * qtwebengine-pipewire-0.3.patch + * qtwebengine-python3.patch +- Use a newer catapult snapshot when building with python3 + +------------------------------------------------------------------- New: ---- catapult-git.tar.xz qtwebengine-ffmpeg5.patch qtwebengine-pipewire-0.3.patch qtwebengine-python3.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt5-qtwebengine.spec ++++++ --- /var/tmp/diff_new_pack.38u6yV/_old 2022-09-26 18:47:47.260007082 +0200 +++ /var/tmp/diff_new_pack.38u6yV/_new 2022-09-26 18:47:47.268007097 +0200 @@ -1,8 +1,7 @@ # # spec file for package libqt5-qtwebengine # -# Copyright (c) 2021 SUSE LLC -# Copyright ?? 2017 Kevin Kofler <ke...@tigcc.ticalc.org> +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,6 +23,10 @@ %endif %bcond_without system_ffmpeg %bcond_without system_minizip +%bcond_without pipewire +%if %{?suse_version} > 1500 || 0%{?sle_version} > 150400 +%bcond_without python3 +%endif # spellchecking dictionary directory %global _qtwebengine_dictionaries_dir %{_libqt5_datadir}/qtwebengine_dictionaries @@ -40,6 +43,8 @@ %define so_version 5.15.10 %define tar_version qtwebengine-everywhere-src-%{version} Source: %{tar_version}.tar.xz +# Use a git snapshot for catapult to build with python3 (git rev: b7e9d5899) +Source1: catapult-git.tar.xz Source99: libqt5-qtwebengine-rpmlintrc # PATCH-FIX-UPSTREAM armv6-ffmpeg-no-thumb.patch - Fix ffmpeg configuration for armv6 Patch0: armv6-ffmpeg-no-thumb.patch @@ -50,26 +55,26 @@ Patch3: rtc-dont-use-h264.patch # PATCH-FIX-UPSTREAM Patch4: 0001-skia-Some-includes-to-fix-build-with-GCC-12.patch +# PATCH-FIX-UPSTREAM -- build with pipewire 0.3 +Patch5: qtwebengine-pipewire-0.3.patch +### Patch 50-99 are applied conditionally +# PATCH-FIX-OPENSUSE -- allow building qtwebengine with python3 and ffmpeg5 +Patch50: qtwebengine-python3.patch +Patch51: qtwebengine-ffmpeg5.patch +### # http://www.chromium.org/blink is not ported to PowerPC & s390 ExcludeArch: ppc ppc64 ppc64le s390 s390x # Try to fix i586 MemoryErrors with rpmlint #!BuildIgnore: rpmlint BuildRequires: bison BuildRequires: fdupes -%if %{with system_ffmpeg} -BuildRequires: ffmpeg-4-libavcodec-devel -BuildRequires: ffmpeg-4-libavformat-devel -BuildRequires: ffmpeg-4-libavutil-devel -%endif BuildRequires: flac-devel BuildRequires: flex -BuildRequires: gperf BuildRequires: git-core +BuildRequires: gperf BuildRequires: krb5 BuildRequires: krb5-devel BuildRequires: libQt5QuickControls2-devel -# For building pdf examples... -BuildRequires: libqt5-qtsvg-devel BuildRequires: libcap-devel BuildRequires: libgcrypt-devel BuildRequires: libjpeg-devel @@ -77,37 +82,45 @@ BuildRequires: libqt5-qtbase-private-headers-devel >= 5.12 BuildRequires: libqt5-qtdeclarative-private-headers-devel >= 5.12 BuildRequires: libqt5-qtlocation-private-headers-devel >= 5.12 +# For building pdf examples... +BuildRequires: libqt5-qtsvg-devel BuildRequires: libqt5-qttools-private-headers-devel >= 5.12 BuildRequires: libqt5-qtwebchannel-private-headers-devel >= 5.12 BuildRequires: libqt5-qtxmlpatterns-private-headers-devel >= 5.12 BuildRequires: memory-constraints BuildRequires: ninja -# nodejs-default doesn't exist on Leap 15.2 -%if 0%{?suse_version} == 1500 && 0%{?sle_version} == 150200 -BuildRequires: nodejs-common -%else BuildRequires: nodejs-default -%endif BuildRequires: pam-devel BuildRequires: pciutils-devel BuildRequires: perl BuildRequires: perl-JSON +%if %{with pipewire} +BuildRequires: pipewire-devel +%endif BuildRequires: pkgconfig +%if %{with python3} +BuildRequires: python3 +BuildRequires: python3-devel +BuildRequires: python3-html5lib +BuildRequires: python3-xml +%else BuildRequires: python BuildRequires: python-devel BuildRequires: python-xml +%endif BuildRequires: re2c BuildRequires: sed BuildRequires: snappy-devel BuildRequires: update-desktop-files BuildRequires: usbutils BuildRequires: util-linux -%ifnarch %arm +%ifnarch %{arm} BuildRequires: valgrind-devel %endif BuildRequires: wdiff BuildRequires: xz BuildRequires: yasm +BuildRequires: yasm-devel BuildRequires: perl(Switch) BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(atk) @@ -123,10 +136,15 @@ BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gthread-2.0) BuildRequires: pkgconfig(harfbuzz) >= 2.4.0 -BuildRequires: pkgconfig(icu-uc) >= 65.0 BuildRequires: pkgconfig(icu-i18n) >= 65.0 +BuildRequires: pkgconfig(icu-uc) >= 65.0 BuildRequires: pkgconfig(jsoncpp) BuildRequires: pkgconfig(lcms2) +%if %{with system_ffmpeg} +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +%endif BuildRequires: pkgconfig(libcrypto) BuildRequires: pkgconfig(libdrm) BuildRequires: pkgconfig(libevent) @@ -273,7 +291,30 @@ Examples for the libqt5-qtpdf module. %prep -%autosetup -p1 -n %{tar_version} +%setup -q -n %{tar_version} +# Leap 15 doesn't understand '%%autopatch -m' +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 + +%if %{with python3} +%patch50 -p1 +# Replace the whole catapult folder rather than picking individual changes +pushd src/3rdparty/chromium/third_party +rm -r catapult +tar xJf %{SOURCE1} +mv catapult-git catapult +popd +%endif + +# FFmpeg 5 +%if %{with system_ffmpeg} && %{pkg_vcmp libavcodec-devel >= 5} +%patch51 -p1 +%endif + sed -i 's|$(STRIP)|strip|g' src/core/core_module.pro #force the configure script to generate the forwarding headers (it checks whether .git directory exists) @@ -314,6 +355,9 @@ -system-webengine-ffmpeg \ -webengine-proprietary-codecs \ %endif +%if %{with pipewire} + -webengine-webrtc-pipewire +%endif # Determine the right number of parallel processes based on the available memory %limit_build -m 2750 @@ -322,6 +366,7 @@ # processes instead of its defaults. export NINJAFLAGS="%{?_smp_mflags}" +# Warning: Don't use %%make_build or the chromium build log won't be available make %{_smp_mflags} VERBOSE=1 %install ++++++ _service ++++++ --- /var/tmp/diff_new_pack.38u6yV/_old 2022-09-26 18:47:47.332007219 +0200 +++ /var/tmp/diff_new_pack.38u6yV/_new 2022-09-26 18:47:47.336007226 +0200 @@ -7,10 +7,17 @@ <param name="filename">qtwebengine-everywhere-src</param> <param name="revision">v5.15.10-lts</param> </service> + <service name="tar_scm" mode="disabled"> + <param name="changesgenerate">disable</param> + <param name="url">https://chromium.googlesource.com/catapult</param> + <param name="revision">main</param> + <param name="scm">git</param> + <param name="filename">catapult</param> + <param name="versionformat">git</param> + </service> <service name="recompress" mode="disabled"> <param name="file">*.tar</param> <param name="compression">xz</param> </service> - <service name="set_version" mode="disabled" /> </services> ++++++ qtwebengine-ffmpeg5.patch ++++++ Allow building qtwebengine using ffmpeg 5 Origin: ArchLinux, https://github.com/archlinux/svntogit-packages/tree/packages/qt5-webengine/trunk diff --git a/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h b/src/3rdparty/chromium/media/ffmpeg/ffmpeg_common.h index 2734a48..70b1877 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/src/3rdparty/chromium/media/filters/audio_file_reader.cc b/src/3rdparty/chromium/media/filters/audio_file_reader.cc index cb81d92..bd73908 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/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_audio_decoder.cc index 0d825ed..72fac61 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/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc b/src/3rdparty/chromium/media/filters/ffmpeg_demuxer.cc index d34db63..427565b 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/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc b/src/3rdparty/chromium/media/filters/ffmpeg_glue.cc index 0ef3521..8483ecc 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/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc b/src/3rdparty/chromium/media/filters/ffmpeg_video_decoder.cc index ef12477..7996606 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/src/3rdparty/chromium/media/filters/media_file_checker.cc b/src/3rdparty/chromium/media/filters/media_file_checker.cc index 59c2a2f..1a9872c 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/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 index 9002b87..d12fade 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. ++++++ qtwebengine-pipewire-0.3.patch ++++++ ++++ 1765 lines (skipped) ++++++ qtwebengine-python3.patch ++++++ ++++ 2059 lines (skipped)