diff --git a/chromium-angle-nullptr.patch b/chromium-angle-nullptr.patch new file mode 100644 index 0000000000000000000000000000000000000000..78ae3891bc4bde4357973f43d66a5b1be0b4ca5f --- /dev/null +++ b/chromium-angle-nullptr.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp.nullptr qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp.nullptr 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/angle/src/common/utilities.cpp 2022-01-19 08:52:02.659577615 -0600 +@@ -254,7 +254,7 @@ std::string GetGLSLTypeString(GLenum typ + return "mat4"; + default: + UNREACHABLE(); +- return nullptr; ++ return ""; + } + } + diff --git a/chromium-hunspell-nullptr.patch b/chromium-hunspell-nullptr.patch new file mode 100644 index 0000000000000000000000000000000000000000..b215049804820ad0ba6f0970534438e04db8f64d --- /dev/null +++ b/chromium-hunspell-nullptr.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx.nullptr qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx.nullptr 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/hunspell/src/hunspell/hunspell.cxx 2022-01-19 10:30:40.845051982 -0600 +@@ -1725,7 +1725,7 @@ std::string HunspellImpl::get_xml_par(co + if (end == '>') + end = '<'; + else if (end != '\'' && end != '"') +- return 0; // bad XML ++ return dest; // bad XML + for (par++; *par != '\0' && *par != end; ++par) { + dest.push_back(*par); + } diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh new file mode 100755 index 0000000000000000000000000000000000000000..360f33062ba3216deb4902c908aace2f8a6051fd --- /dev/null +++ b/clean_ffmpeg.sh @@ -0,0 +1,364 @@ +#!/bin/bash +# Copyright 2013 Tomas Popela +# Copyright 2016-2017 Kevin Kofler +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +where=`pwd` + +generated_files=`./get_free_ffmpeg_source_files.py $1 0` +generated_files_headers="${generated_files//.c/.h}" +generated_files_headers="${generated_files_headers//.S/.h}" +generated_files_headers="${generated_files_headers//.asm/.h}" + +cd $1/third_party/ffmpeg + +header_files=" libavutil/x86/asm.h \ + libavutil/x86/bswap.h \ + libavutil/x86/cpu.h \ + libavutil/x86/emms.h \ + libavutil/x86/intmath.h \ + libavutil/x86/intreadwrite.h \ + libavutil/x86/timer.h \ + libavutil/aarch64/asm.S \ + libavutil/aarch64/bswap.h \ + libavutil/aarch64/cpu.h \ + libavutil/aarch64/timer.h \ + libavutil/arm/asm.S \ + libavutil/arm/bswap.h \ + libavutil/arm/cpu.h \ + libavutil/arm/float_dsp_arm.h \ + libavutil/arm/intmath.h \ + libavutil/arm/intreadwrite.h \ + libavutil/arm/timer.h \ + libavutil/ppc/cpu.h \ + libavutil/ppc/float_dsp_altivec.h \ + libavutil/ppc/float_dsp_vsx.h \ + libavutil/ppc/intreadwrite.h \ + libavutil/ppc/timer.h \ + libavutil/ppc/util_altivec.h \ + libavutil/aes_internal.h \ + libavutil/atomic.h \ + libavutil/atomic_gcc.h \ + libavutil/attributes.h \ + libavutil/audio_fifo.h \ + libavutil/avassert.h \ + libavutil/avutil.h \ + libavutil/bswap.h \ + libavutil/buffer_internal.h \ + libavcodec/bsf_internal.h \ + libavcodec/codec.h \ + libavcodec/codec_desc.h \ + libavcodec/codec_id.h \ + libavcodec/codec_par.h \ + libavcodec/decode.h \ + libavcodec/hwconfig.h \ + libavcodec/internal.h \ + libavcodec/packet.h \ + libavcodec/packet_internal.h \ + libavutil/common.h \ + libavutil/colorspace.h \ + libavutil/cpu_internal.h \ + libavutil/cpu.h \ + libavutil/dynarray.h \ + libavutil/ffmath.h \ + libavutil/fixed_dsp.h \ + libavutil/float_dsp.h \ + libavutil/hwcontext_internal.h \ + libavutil/imgutils.h \ + libavutil/imgutils_internal.h \ + libavutil/internal.h \ + libavutil/intfloat.h \ + libavutil/intreadwrite.h \ + libavutil/libm.h \ + libavutil/lls.h \ + libavutil/lzo.h \ + libavutil/macros.h \ + libavutil/mem_internal.h \ + libavcodec/mlp_parse.h \ + libavutil/old_pix_fmts.h \ + libavutil/pixfmt.h \ + libavutil/qsort.h \ + libavutil/replaygain.h \ + libavutil/softfloat_tables.h \ + libavutil/thread.h \ + libavutil/timer.h \ + libavutil/timestamp.h \ + libavutil/time_internal.h \ + libavutil/tx_priv.h \ + libavutil/tx_template.c \ + libavutil/version.h \ + libavutil/x86_cpu.h + libavcodec/aarch64/neon.S \ + libavcodec/aarch64/vp8dsp.h \ + libavcodec/x86/constants.h \ + libavcodec/x86/dsputil_x86.h \ + libavcodec/x86/fft.h \ + libavcodec/x86/fpel.h \ + libavcodec/x86/hpeldsp.h \ + libavcodec/x86/inline_asm.h \ + libavcodec/x86/mathops.h \ + libavcodec/x86/vp56_arith.h \ + libavcodec/arm/mathops.h \ + libavcodec/arm/neon.S \ + libavcodec/arm/videodsp_arm.h \ + libavcodec/arm/vp56_arith.h \ + libavcodec/arm/vp8.h \ + libavcodec/arm/vp8dsp.h \ + libavcodec/ppc/fft_vsx.h \ + libavcodec/ppc/hpeldsp_altivec.h \ + libavcodec/ppc/mathops.h \ + libavcodec/aac_ac3_parser.h \ + libavcodec/ac3_parser_internal.h \ + libavcodec/ac3.h \ + libavcodec/adts_header.h \ + libavcodec/avcodec.h \ + libavcodec/blockdsp.h \ + libavcodec/bytestream.h \ + libavcodec/dct.h \ + libavcodec/dct32.h \ + libavcodec/dsputil.h \ + libavcodec/dv_profile_internal.h \ + libavcodec/error_resilience.h \ + libavcodec/fdctdsp.h \ + libavcodec/flac.h \ + libavcodec/flacdsp.h \ + libavcodec/fft.h \ + libavcodec/fft-internal.h \ + libavcodec/fft_table.h \ + libavcodec/frame_thread_encoder.h \ + libavcodec/get_bits.h \ + libavcodec/h263dsp.h \ + libavcodec/h264chroma.h \ + libavcodec/h264pred.h \ + libavcodec/hpeldsp.h \ + libavcodec/hwaccel.h \ + libavcodec/hwaccels.h \ + libavcodec/idctdsp.h \ + libavcodec/internal.h \ + libavcodec/mathops.h \ + libavcodec/mdct15.h \ + libavcodec/me_cmp.h \ + libavcodec/motion_est.h \ + libavcodec/mpegaudio_tablegen.h \ + libavcodec/mpegaudiodectab.h \ + libavcodec/mpegaudiodsp.h \ + libavcodec/mpeg12.h \ + libavcodec/mpeg12data.h \ + libavcodec/mpeg12vlc.h \ + libavcodec/mpegpicture.h \ + libavcodec/mpegutils.h \ + libavcodec/mpegvideo.h \ + libavcodec/mpegvideodata.h \ + libavcodec/mpegvideodsp.h \ + libavcodec/mpegvideoencdsp.h \ + libavcodec/old_codec_ids.h \ + libavcodec/options_table.h \ + libavcodec/opus_celt.h \ + libavcodec/opusdsp.h \ + libavcodec/opus_pvq.h \ + libavcodec/opus_rc.h \ + libavcodec/pcm_tablegen.h \ + libavcodec/pel_template.c \ + libavcodec/pixblockdsp.h \ + libavcodec/pixels.h \ + libavcodec/png.h \ + libavcodec/pthread_internal.h \ + libavcodec/put_bits.h \ + libavcodec/qpeldsp.h \ + libavcodec/ratecontrol.h \ + libavcodec/rectangle.h \ + libavcodec/rl.h \ + libavcodec/rnd_avg.h \ + libavcodec/thread.h \ + libavcodec/tpel_template.c \ + libavcodec/unary.h \ + libavcodec/version.h \ + libavcodec/videodsp.h \ + libavcodec/vlc.h \ + libavcodec/vorbis_parser_internal.h \ + libavcodec/vorbisdsp.h \ + libavcodec/vp3data.h \ + libavcodec/vp3dsp.h \ + libavcodec/vp4data.h \ + libavcodec/vp56.h \ + libavcodec/vp56dsp.h \ + libavcodec/vp8data.h \ + libavcodec/vp8.h \ + libavcodec/vp8dsp.h \ + libavformat/audiointerleave.h \ + libavformat/avio_internal.h \ + libavformat/avformat.h \ + libavformat/dv.h \ + libavformat/internal.h \ + libavformat/pcm.h \ + libavformat/rdt.h \ + libavformat/rtp.h \ + libavformat/rtpdec.h \ + libavformat/spdif.h \ + libavformat/srtp.h \ + libavformat/options_table.h \ + libavformat/version.h \ + libavformat/w64.h \ + libswresample/swresample.h \ + libswresample/version.h \ + compat/va_copy.h " + +manual_files=" libavutil/x86/x86inc.asm \ + libavutil/x86/x86util.asm \ + libavcodec/x86/hpeldsp_rnd_template.c \ + libavcodec/x86/rnd_template.c \ + libavcodec/x86/autorename_libavcodec_x86_videodsp_init.c \ + libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c \ + libavcodec/x86/constants.c \ + libavcodec/x86/fft_init.c \ + libavcodec/x86/h264_intrapred_init.c \ + libavcodec/x86/hpeldsp_init.c \ + libavcodec/x86/videodsp_init.c \ + libavcodec/x86/vorbisdsp_init.c \ + libavcodec/x86/vp3dsp_init.c \ + libavcodec/x86/vp8dsp_init.c \ + libavutil/x86/autorename_libavutil_x86_cpu.c \ + libavutil/x86/autorename_libavutil_x86_float_dsp_init.c \ + libavutil/x86/cpu.c \ + libavutil/x86/float_dsp_init.c \ + libavutil/x86/lls_init.c \ + libavcodec/x86/deinterlace.asm \ + libavcodec/x86/fft.asm \ + libavcodec/x86/fpel.asm \ + libavcodec/x86/h264_intrapred.asm \ + libavcodec/x86/h264_intrapred_10bit.asm \ + libavcodec/x86/hpeldsp.asm \ + libavcodec/x86/videodsp.asm \ + libavcodec/x86/vorbisdsp.asm \ + libavcodec/x86/vp3dsp.asm \ + libavcodec/x86/vp8dsp.asm \ + libavcodec/x86/vp8dsp_loopfilter.asm \ + libavutil/x86/cpuid.asm \ + libavutil/x86/float_dsp.asm \ + libavutil/x86/lls.asm \ + libavcodec/bit_depth_template.c \ + libavcodec/dct32_template.c \ + libavcodec/fft_template.c \ + libavcodec/h264pred_template.c \ + libavcodec/hpel_template.c \ + libavcodec/hpeldsp_template.c \ + libavcodec/mdct_template.c \ + libavcodec/mpegaudiodec_template.c \ + libavcodec/mpegaudiodsp_template.c + libavcodec/mpegaudiodsp.c \ + libavcodec/videodsp_template.c \ + libavcodec/flacdec.c \ + libavcodec/flacdsp.c \ + libavcodec/flacdsp_template.c \ + libavcodec/flacdsp_lpc_template.c \ + libavcodec/h264pred.c \ + libavcodec/hpeldsp.c \ + libavcodec/videodsp.c \ + libavcodec/vorbisdsp.c \ + libavcodec/vp3.c \ + libavcodec/vp3_parser.c \ + libavcodec/vp3dsp.c \ + libavcodec/vp56rac.c \ + libavcodec/vp8.c \ + libavcodec/vp8_parser.c \ + libavcodec/vp8dsp.c \ + libavutil/cpu.c \ + libavutil/fixed_dsp.c \ + libavutil/float_dsp.c \ + libavutil/imgutils.c \ + libavutil/aarch64/cpu.c \ + libavutil/aarch64/float_dsp_neon.S \ + libavutil/arm/cpu.c \ + libavutil/arm/float_dsp_neon.S \ + libavformat/options.c \ + libavformat/pcm.c \ + libavformat/utils.c \ + libavcodec/utils.c \ + libavcodec/aarch64/fft_neon.S \ + libavcodec/aarch64/hpeldsp_neon.S \ + libavcodec/aarch64/h264pred_neon.S \ + libavcodec/aarch64/mdct_neon.S \ + libavcodec/aarch64/vorbisdsp_neon.S \ + libavcodec/aarch64/vp8dsp_neon.S \ + libavcodec/arm/vorbisdsp_neon.S \ + libavcodec/arm/mdct_neon.S \ + libavcodec/arm/fft_neon.S \ + libavcodec/arm/vp8dsp_neon.S \ + libavutil/ppc/cpu.c \ + libavutil/ppc/float_dsp_altivec.c \ + libavutil/ppc/float_dsp_init.c \ + libavutil/ppc/float_dsp_vsx.c \ + libavcodec/ppc/fft_altivec.S \ + libavcodec/ppc/fft_init.c \ + libavcodec/ppc/fft_vsx.c \ + libavcodec/ppc/hpeldsp_altivec.c \ + libavcodec/ppc/mpegaudiodsp_altivec.c \ + libavcodec/ppc/videodsp.c \ + libavcodec/ppc/vorbisdsp_altivec.c \ + libavcodec/ppc/vp3dsp_altivec.c \ + libavcodec/ppc/vp8dsp_altivec.c \ + chromium/ffmpeg_stub_headers.fragment \ + chromium/ffmpegsumo.sigs" + +other_files=" BUILD.gn \ + Changelog \ + COPYING.GPLv2 \ + COPYING.GPLv3 \ + COPYING.LGPLv2.1 \ + COPYING.LGPLv3 \ + CREDITS \ + CREDITS.chromium \ + ffmpeg.gyp \ + ffmpeg_generated.gypi \ + ffmpeg_generated.gni \ + ffmpeg_options.gni \ + ffmpegsumo.ver \ + INSTALL \ + LICENSE \ + MAINTAINERS \ + OWNERS \ + README \ + README.chromium \ + RELEASE \ + xcode_hack.c " + +files=$generated_files$manual_files$other_files$generated_files_headers$header_files + +for f in $files +do + dir_name=`dirname $f`/ + if [[ $dir_name == ./ ]]; then + dir_name= + else + mkdir -p ../tmp_ffmpeg/$dir_name + fi + + cp -p $f ../tmp_ffmpeg/$dir_name 2>/dev/null +done + +# whole directory +mkdir -p ../tmp_ffmpeg/chromium +cp -pr chromium/config ../tmp_ffmpeg/chromium/ + +cd .. +rm -rf ffmpeg +mv tmp_ffmpeg ffmpeg + +cd $where diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh new file mode 100755 index 0000000000000000000000000000000000000000..17f77fa5b15a6a24e9a04894776fc0ddae173093 --- /dev/null +++ b/clean_qtwebengine.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# Copyright 2015-2017 Kevin Kofler +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +if [ -z "$1" ] ; then + echo "usage: ./clean_qtwebengine.sh VERSION" + echo "e.g.: ./clean_qtwebengine.sh 5.15.8" + exit 1 +fi + +DIRNAME="qtwebengine-everywhere-src-$1" + +echo "removing $DIRNAME" +rm -rf "$DIRNAME" || exit $? + +if [ -f "$DIRNAME.tar.xz" ] ; then + echo "unpacking $DIRNAME.tar.xz" + XZ_OPT="-T 4" tar xJf "$DIRNAME.tar.xz" || exit $? +elif [ -f "$DIRNAME.tar.bz2" ] ; then + echo "unpacking $DIRNAME.tar.bz2" + tar xjf "$DIRNAME.tar.bz2" || exit $? +elif [ -f "$DIRNAME.tar.gz" ] ; then + echo "unpacking $DIRNAME.tar.gz" + tar xzf "$DIRNAME.tar.gz" || exit $? +elif [ -f "$DIRNAME.7z" ] ; then + echo "unpacking $DIRNAME.7z" + if type 7za >/dev/null 2>/dev/null ; then + 7za x "$DIRNAME.7z" || exit $? + elif type 7z >/dev/null 2>/dev/null ; then + 7z x "$DIRNAME.7z" || exit $? + else + echo "error: p7zip required" + exit 1 + fi +else + echo "error: no archive for $DIRNAME found" + exit 1 +fi + +echo "running clean_ffmpeg.sh" +./clean_ffmpeg.sh "$DIRNAME/src/3rdparty/chromium" || exit $? + +echo "ripping out openh264 sources" +rm -rf "$DIRNAME/src/3rdparty/chromium/third_party/openh264/src" || exit $? + +echo "repacking as $DIRNAME-clean.tar.xz" +XZ_OPT="-8 -T 2" tar cJf "$DIRNAME-clean.tar.xz" "$DIRNAME" || exit $? + +echo "removing $DIRNAME" +rm -rf "$DIRNAME" || exit $? + +echo "done" +exit 0 diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py new file mode 100755 index 0000000000000000000000000000000000000000..390ee3f56a5023cfdb31849146506600ffebbbe7 --- /dev/null +++ b/get_free_ffmpeg_source_files.py @@ -0,0 +1,82 @@ +#!/usr/bin/python3 +# Copyright 2015 Tomas Popela +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import sys +import re + +def append_sources (input_sources, output_sources): + + # Get the source files. + source_files = re.findall(r"\"(.*?)\"", input_sources) + output_sources += source_files + + +def parse_sources(input_sources, output_sources, arch_not_arm): + + # Get the type of sources in one group and sources itself in the other one. + blocks = re.findall(r"(ffmpeg[^\s]*).*?\[(.*?)]", input_sources, re.DOTALL) + for block in blocks: + if (arch_not_arm): + if not 'ffmpeg_gas_sources' in block[0]: + append_sources (block[1], output_sources) + else: + append_sources (block[1], output_sources) + + +def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm): + + with open(gyni_path, "r") as input_file: + content = input_file.read().replace('\n', '') + + output_sources = [] + # Get all the sections. + sections = re.findall(r"if (.*?})", content, re.DOTALL) + for section in sections: + # Get all the conditions (first group) and sources (second group) for the + # current section. + blocks = re.findall(r"(\(.*?\))\s\{(.*?)\}", section, re.DOTALL) + for block in blocks: + conditions = re.findall(r"\(?\((.*?)\)", block[0]) + inserted = False + for condition in conditions: + if inserted: + break + limitations = ['ffmpeg_branding == "Chrome"', 'ffmpeg_branding == "ChromeOS"'] + if ('use_linux_config' in condition) and not any(limitation in condition for limitation in limitations): + if (arch_not_arm): + if ('x64' in condition) or ('x86' in condition): + parse_sources (block[1], output_sources, arch_not_arm) + inserted = True + else: + parse_sources (block[1], output_sources, arch_not_arm) + inserted = True + + if len(output_sources) == 0: + sys.stderr.write("Something went wrong, no sources parsed!\n") + sys.exit(1) + + print(' '.join(output_sources)) + + +if __name__ == "__main__": + + path = "%s/third_party/ffmpeg/ffmpeg_generated.gni" % sys.argv[1] + parse_ffmpeg_gyni_file (path, False if sys.argv[2] == "0" else True) diff --git a/macros.qt5-qtwebengine b/macros.qt5-qtwebengine new file mode 100644 index 0000000000000000000000000000000000000000..5b2f86b6d311c1a0bbc2c6f0afdb55b9887ad664 --- /dev/null +++ b/macros.qt5-qtwebengine @@ -0,0 +1,4 @@ +%_qt5_qtwebengine @@NAME@@ +%_qt5_qtwebengine_epoch @@EPOCH@@ +%_qt5_qtwebengine_version @@VERSION@@ +%_qt5_qtwebengine_evr @@EVR@@ diff --git a/pulseaudio-12.2-headers.tar.gz b/pulseaudio-12.2-headers.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..251e70e17ed15010f523ab92b0a997fecd389900 Binary files /dev/null and b/pulseaudio-12.2-headers.tar.gz differ diff --git a/python2.7-2.7.18-19.el9.1.aarch64.rpm b/python2.7-2.7.18-19.el9.1.aarch64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..6a2a5928422acbfb70ff5fd62d87b99cbfded349 Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.aarch64.rpm differ diff --git a/python2.7-2.7.18-19.el9.1.src.rpm b/python2.7-2.7.18-19.el9.1.src.rpm new file mode 100644 index 0000000000000000000000000000000000000000..6fc955fb6d7f50e413316602c06f6a7ab882fcd8 Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.src.rpm differ diff --git a/python2.7-2.7.18-19.el9.1.x86_64.rpm b/python2.7-2.7.18-19.el9.1.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..f2d73d8a6edb23d106a64f228c7bbad4ef5512ee Binary files /dev/null and b/python2.7-2.7.18-19.el9.1.x86_64.rpm differ diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec index 72aeacfe9bb2f4572532d476797ad52563419c2e..63cb147bb4a96868987b24f4c9fa2619acfc6b95 100644 --- a/qt5-qtwebengine.spec +++ b/qt5-qtwebengine.spec @@ -1,161 +1,560 @@ -%define _binaries_in_noarch_packages_terminate_build 0 +%global qt_module qtwebengine + %global _hardened_build 1 -%global __provides_exclude ^lib.*plugin\\.so.*|libv8\\.so$ -%global __requires_exclude ^libv8\\.so$ + +# package-notes causes FTBFS (#2043178) +%undefine _package_note_file + +# define to build docs, may need to undef this for bootstrapping +# where qt5-qttools (qt5-doctools) builds are not yet available +%global docs 0 + +# need libvpx >= 1.8.0 (need commit 297dfd869609d7c3c5cd5faa3ebc7b43a394434e) +%global use_system_libvpx 0 +# For screen sharing on Wayland, currently Fedora only thing - no epel +#global pipewire 1 +# need libwebp >= 0.6.0 +%global use_system_libwebp 1 +%global use_system_jsoncpp 1 +#%global use_system_re2 0 + +# need libicu >= 65, only currently available on f33+ +%global use_system_libicu 1 + +# NEON support on ARM (detected at runtime) - disable this if you are hitting +# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 +#global arm_neon 1 + +# the QMake CONFIG flags to force debugging information to be produced in +# release builds, and for all parts of the code +%ifarch %{arm} aarch64 +# the ARM builder runs out of memory during linking with the full setting below, +# so omit debugging information for the parts upstream deems it dispensable for +# (webcore, v8base) +%global debug_config %{nil} +%else +%global debug_config force_debug_info +# webcore_debug v8base_debug +%endif + +#global prerelease rc + +# spellchecking dictionary directory +%global _qtwebengine_dictionaries_dir %{_qt5_datadir}/qtwebengine_dictionaries + +%global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) + +# exclude plugins +%global __provides_exclude ^lib.*plugin\\.so.*$ +# and designer plugins %global __provides_exclude_from ^%{_qt5_plugindir}/.*\\.so$ -Name: qt5-qtwebengine -Version: 5.11.1 -Release: 10 -Summary: Qt5 - QtWebEngine components -License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) -URL: http://www.qt.io -Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz -# some tweaks to linux.pri (system yasm, link libpci, run unbundling script) -# From: https://github.com/rpmfusion/qt5-qtwebengine-freeworld/blob/master/qtwebengine-everywhere-src-5.10.0-linux-pri.patch -Patch0000: qtwebengine-everywhere-src-5.10.0-linux-pri.patch -# quick hack to avoid checking for the nonexistent icudtl.dat and silence the -# resulting warnings - not upstreamable as is because it removes the fallback -# mechanism for the ICU data directory (which is not used in our builds because -# we use the system ICU, which embeds the data statically) completely -# From: https://github.com/rpmfusion/qt5-qtwebengine-freeworld/blob/master/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch -Patch0001: qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch +Summary: Qt5 - QtWebEngine components +Name: qt5-qtwebengine +Version: 5.15.10 +Release: 1 + +# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details +# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html +# The other licenses are from Chromium and the code it bundles +License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) +URL: http://www.qt.io +# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg +# ./qtwebengine-release.sh +# ./clean_qtwebengine.sh 5.15.1 +Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz +# release script used above +Source1: qtwebengine-release.sh +# cleanup scripts used above +Source2: clean_qtwebengine.sh +Source3: clean_ffmpeg.sh +Source4: get_free_ffmpeg_source_files.py +# macros +Source10: macros.qt5-qtwebengine + +# pulseaudio headers +Source20: pulseaudio-12.2-headers.tar.gz + +## Python2 Sources +## src.rpm is Fedora spec with tests and tkinter turned off +## binary rpms have been built on epel9 +Source100: python2.7-2.7.18-19.el9.1.src.rpm +Source101: python2.7-2.7.18-19.el9.1.aarch64.rpm +Source102: python2.7-2.7.18-19.el9.1.x86_64.rpm + # fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the # ARM flags with our %%qmake_qt5 macro, including for the next patch -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch -Patch0002: qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch -# fix missing ARM -mfpu setting -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-opensource-src-5.9.2-arm-fpu-fix.patch -Patch0003: qtwebengine-opensource-src-5.9.2-arm-fpu-fix.patch -# remove Android dependencies from openmax_dl ARM NEON detection (detect.c) -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch -Patch0004: qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch -# webrtc: enable the CPU feature detection for ARM Linux also for Chromium -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch -Patch0005: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch -# Force verbose output from the GN bootstrap process -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch -Patch0006: qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch -# Fix FTBFS with GCC 8 on i686: GCC8 has changed the alignof operator to return -# the minimal alignment required by the target ABI instead of the preferred -# alignment. This means int64_t is now 4 on i686 (instead of 8). Use __alignof__ -# to get the value we expect (and chromium checks for). Patch by spot. -# From: https://gitlab.com/unity-mageia/qtwebengine5/-/blob/master/qtwebengine-everywhere-src-5.10.1-gcc8-alignof.patch -Patch0009: qtwebengine-everywhere-src-5.10.1-gcc8-alignof.patch -Patch0010: qtwebengine-everywhere-src-5.11.1-fix-U16_NEXT-calls.patch -Patch6000: qtwebengine-fix-pluse-stubs.patch - -BuildRequires: qt5-qtbase-devel qt5-qtbase-private-devel qt5-qtdeclarative-devel qt5-qtxmlpatterns-devel -BuildRequires: qt5-qtlocation-devel qt5-qtsensors-devel qt5-qtwebchannel-devel qt5-qttools-static -BuildRequires: qt5-qtquickcontrols2-devel ninja-build cmake bison flex git-core gperf libicu-devel -BuildRequires: libjpeg-devel re2-devel snappy-devel pkgconfig(expat) pkgconfig(gobject-2.0) -BuildRequires: pkgconfig(fontconfig) pkgconfig(freetype2) pkgconfig(gl) pkgconfig(egl) pkgconfig(libpng) -BuildRequires: pkgconfig(libudev) pkgconfig(libwebp) >= 0.6.0 pkgconfig(harfbuzz) pkgconfig(libdrm) -BuildRequires: pkgconfig(opus) pkgconfig(libevent) pkgconfig(zlib) pkgconfig(minizip) pkgconfig(x11) -BuildRequires: pkgconfig(xi) pkgconfig(xcursor) pkgconfig(xext) pkgconfig(xfixes) pkgconfig(xrender) -BuildRequires: pkgconfig(xdamage) pkgconfig(xcomposite) pkgconfig(xtst) pkgconfig(xrandr) pkgconfig(xscrnsaver) -BuildRequires: pkgconfig(libcap) pkgconfig(libpulse) pkgconfig(alsa) pkgconfig(libpci) pkgconfig(dbus-1) -BuildRequires: pkgconfig(nss) pkgconfig(lcms2) perl-interpreter python2 pkgconfig(glib-2.0) -Provides: bundled(chromium) = 61.0.3163.140 bundled(angle) = 2422 bundled(boringssl) bundled(brotli) -Provides: bundled(ffmpeg) = 3.3 bundled(hunspell) = 1.6.0 bundled(iccjpeg) bundled(khronos_headers) -Provides: bundled(leveldb) = 1.20 bundled(libjingle) bundled(libsrtp) = 2.1.0 bundled(libvpx) = 1.6.1 -Provides: bundled(libxml2) = 2.9.4 bundled(libxslt) = 1.1.29 bundled(libXNVCtrl) = 302.17 -Provides: bundled(libyuv) = 1658 bundled(modp_b64) bundled(openmax_dl) = 1.0.2 bundled(ots) -Provides: bundled(protobuf) = 3.0.0-0.1.beta3 bundled(qcms) = 4 bundled(sfntly) bundled(skia) -Provides: bundled(SMHasher) = 0-0.1.svn147 bundled(sqlite) = 3.20 bundled(usrsctp) bundled(webrtc) = 90 -Provides: bundled(dmg_fp) bundled(dynamic_annotations) = 4384 bundled(superfasthash) = 0 bundled(symbolize) -Provides: bundled(valgrind.h) bundled(xdg-mime) bundled(xdg-user-dirs) = 0.10 bundled(nsURLParsers) -Provides: bundled(mozilla_security_manager) = 1.9.2 bundled(mojo) bundled(v8) = 6.1.534.44 bundled(fdlibm) = 5.3 -%ifarch x86_64 -BuildRequires: yasm -Provides: bundled(x86inc) +Patch2: qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch +# disable NEON vector instructions on ARM where the NEON code FTBFS due to +# GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 +Patch3: qtwebengine-opensource-src-5.9.0-no-neon.patch +# workaround FTBFS against kernel-headers-5.2.0+ +Patch4: qtwebengine-SIOCGSTAMP.patch +# fix build when using qt < 5.14 +Patch5: qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch +# gcc-12 FTBFS "use of deleted function" +Patch6: chromium-angle-nullptr.patch +Patch7: chromium-hunspell-nullptr.patch +Patch8: qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch +# Fix/workaround FTBFS on aarch64 with newer glibc +Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch +# Use Python2 +Patch26: qtwebengine-everywhere-5.15.5-use-python2.patch +# FTBFS TRUE/FALSE undeclared +Patch31: qtwebengine-everywhere-src-5.15.5-TRUE.patch +Patch32: qtwebengine-skia-missing-includes.patch +# Fix QtWebEngine on Apple M1 hardware (patch from Arch Linux ARM) +## Cf. https://bugreports.qt.io/browse/QTBUG-108674 +## Cf. https://bugzilla.redhat.com/show_bug.cgi?id=2144200 +## From: https://chromium-review.googlesource.com/c/chromium/src/+/3545665 +Patch33: qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch + +## Upstream patches: +# handled by qt5-srpm-macros, which defines %%qt5_qtwebengine_arches +#ExclusiveArch: %{qt5_qtwebengine_arches} + +BuildRequires: make +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtbase-private-devel +# TODO: check of = is really needed or if >= would be good enough -- rex +%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} +BuildRequires: qt5-qtdeclarative-devel +BuildRequires: qt5-qtxmlpatterns-devel +BuildRequires: qt5-qtlocation-devel +BuildRequires: qt5-qtsensors-devel +BuildRequires: qt5-qtsvg-devel +BuildRequires: qt5-qtwebchannel-devel +BuildRequires: qt5-qttools-static +# for examples? +BuildRequires: qt5-qtquickcontrols2-devel +BuildRequires: ninja-build +BuildRequires: cmake +BuildRequires: bison +BuildRequires: flex +BuildRequires: gcc-c++ +# gn links statically (for now) +BuildRequires: libstdc++-static +BuildRequires: git-core +BuildRequires: gperf +BuildRequires: krb5-devel +%if 0%{?use_system_libicu} +BuildRequires: libicu-devel >= 65 +%endif +BuildRequires: libjpeg-devel +BuildRequires: nodejs +#%if 0%{?use_system_re2} +#BuildRequires: re2-devel +#%endif +%if 0%{?pipewire} +BuildRequires: pkgconfig(libpipewire-0.3) +%endif +BuildRequires: snappy-devel +BuildRequires: pkgconfig(expat) +BuildRequires: pkgconfig(gobject-2.0) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(egl) +%if 0%{?use_system_jsoncpp} +BuildRequires: pkgconfig(jsoncpp) %endif -%{?_qt5:Requires: %{_qt5} = %{_qt5_version}} -%{?_qt5_version:Requires: qt5-qtbase = %{_qt5_version}} +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libudev) +%if 0%{?use_system_libwebp} +BuildRequires: pkgconfig(libwebp) >= 0.6.0 +%endif +BuildRequires: pkgconfig(harfbuzz) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(poppler-cpp) +BuildRequires: pkgconfig(zlib) +BuildConflicts: minizip-devel +Provides: bundled(minizip) = 1.2 + +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xcomposite) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(xrandr) +BuildRequires: pkgconfig(xscrnsaver) +BuildRequires: pkgconfig(libcap) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(libpci) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(lcms2) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbfile) +## https://bugreports.qt.io/browse/QTBUG-59094 +## requires libxml2 built with icu support +#BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) +BuildRequires: perl-interpreter +# Only the interpreter is needed +BuildRequires: python3 +%if 0%{?use_system_libvpx} +BuildRequires: pkgconfig(vpx) >= 1.8.0 +%endif +BuildRequires: libtirpc +BuildRequires: libnsl2 +BuildRequires: python-rpm-macros + +# extra (non-upstream) functions needed, see +# src/3rdparty/chromium/third_party/sqlite/README.chromium for details +#BuildRequires: pkgconfig(sqlite3) + +## Various bundled libraries that Chromium does not support unbundling :-( +## Only the parts actually built are listed. +## Query for candidates: +## grep third_party/ build.log | sed 's!third_party/!\nthird_party/!g' | \ +## grep third_party/ | sed 's!^third_party/!!g' | sed 's!/.*$!!g' | \ +## sed 's/\;.*$//g' | sed 's/ .*$//g' | sort | uniq | less +## some false positives where only shim headers are generated for some reason +## some false positives with dummy placeholder dirs (swiftshader, widevine) +## some false negatives where a header-only library is bundled (e.g. x86inc) +## Spot's chromium.spec also has a list that I checked. + +# Of course, Chromium itself is bundled. It cannot be unbundled because it is +# not a library, but forked (modified) application code. +Provides: bundled(chromium) = 87.0.4280.144 + +# Bundled in src/3rdparty/chromium/third_party: +# Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, +# except where specified otherwise. +# Note that many of those libraries are git snapshots, so version numbers are +# necessarily approximate. +# Also note that the list is probably not complete anymore due to Chromium +# adding more and more bundled stuff at every release, some of which (but not +# all) is actually built in QtWebEngine. +# src/3rdparty/chromium/third_party/angle/doc/ChoosingANGLEBranch.md points to +# http://omahaproxy.appspot.com/deps.json?version=87.0.4280.144 chromium_branch +Provides: bundled(angle) = 2422 +# Google's fork of OpenSSL +# We cannot build against NSS instead because it no longer works with NSS 3.21: +# HTTPS on, ironically, Google's sites (Google, YouTube, etc.) stops working +# completely and produces only ERR_SSL_PROTOCOL_ERROR errors: +# http://kaosx.us/phpBB3/viewtopic.php?t=1235 +# https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1520568 +# So we have to do what Chromium now defaults to (since 47): a "chimera build", +# i.e., use the BoringSSL code and the system NSS certificates. +Provides: bundled(boringssl) +Provides: bundled(brotli) +# Don't get too excited. MPEG and other legally problematic stuff is stripped +# out. See clean_qtwebengine.sh, clean_ffmpeg.sh, and +# get_free_ffmpeg_source_files.py. +# see src/3rdparty/chromium/third_party/ffmpeg/Changelog for the version number +Provides: bundled(ffmpeg) = 4.3 +Provides: bundled(hunspell) = 1.6.0 +Provides: bundled(iccjpeg) +# bundled as "khronos", headers only +Provides: bundled(khronos_headers) +# bundled as "leveldatabase" +Provides: bundled(leveldb) = 1.22 +# bundled as "libjingle_xmpp" +Provides: bundled(libjingle) +# see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number +Provides: bundled(libsrtp) = 2.2.0 +%if !0%{?use_system_libvpx} +Provides: bundled(libvpx) = 1.8.2 +%endif +%if !0%{?use_system_libwebp} +Provides: bundled(libwebp) = 1.1.0-28-g55a080e5 +%endif +# bundled as "libxml" +# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h +# post 2.9.9 snapshot?, 2.9.9-0b3c64d9f2f3e9ce1a98d8f19ee7a763c87e27d5 +Provides: bundled(libxml2) = 2.9.10 +# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version +Provides: bundled(libxslt) = 1.1.34 +Provides: bundled(libXNVCtrl) = 302.17 +Provides: bundled(libyuv) = 1768 +Provides: bundled(modp_b64) +Provides: bundled(ots) +Provides: bundled(re2) +# see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version +Provides: bundled(protobuf) = 3.9.0 +Provides: bundled(qcms) = 4 +Provides: bundled(skia) +# bundled as "smhasher" +Provides: bundled(SMHasher) = 0-147 +Provides: bundled(sqlite) = 3.35.5 +Provides: bundled(usrsctp) +Provides: bundled(webrtc) = 90 + +%ifarch %{ix86} x86_64 +# bundled by ffmpeg and libvpx: +# header (for assembly) only +Provides: bundled(x86inc) +%endif + +# Bundled in src/3rdparty/chromium/base/third_party: +# Check src/3rdparty/chromium/third_party/base/*/README.chromium for version +# numbers, except where specified otherwise. +Provides: bundled(dynamic_annotations) = 4384 +Provides: bundled(superfasthash) = 0 +Provides: bundled(symbolize) +# bundled as "valgrind", headers only +Provides: bundled(valgrind.h) +# bundled as "xdg_mime" +Provides: bundled(xdg-mime) +# bundled as "xdg_user_dirs" +Provides: bundled(xdg-user-dirs) = 0.10 + +# Bundled in src/3rdparty/chromium/net/third_party: +# Check src/3rdparty/chromium/third_party/net/*/README.chromium for version +# numbers, except where specified otherwise. +Provides: bundled(mozilla_security_manager) = 1.9.2 + +# Bundled in src/3rdparty/chromium/url/third_party: +# Check src/3rdparty/chromium/third_party/url/*/README.chromium for version +# numbers, except where specified otherwise. +# bundled as "mozilla", file renamed and modified +Provides: bundled(nsURLParsers) + +# Bundled outside of third_party, apparently not considered as such by Chromium: +Provides: bundled(mojo) +# see src/3rdparty/chromium/v8/include/v8_version.h for the version number +Provides: bundled(v8) = 8.7.220.35 +# bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc) +# The version number is 5.3, the last version that upstream released, years ago: +# http://www.netlib.org/fdlibm/readme +Provides: bundled(fdlibm) = 5.3 + +%{?_qt5_version:Requires: qt5-qtbase%{?_isa} = %{_qt5_version}} + +%if 0%{?use_system_icu} +# Those versions were built with bundled ICU and want the data file. +Conflicts: qt5-qtwebengine-freeworld < 5.15.2-2 +%endif + %description -Qt5 - QtWebEngine components. +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt5-qtbase-devel%{?_isa} +Requires: qt5-qtdeclarative-devel%{?_isa} +# not arch'd for now, see if can get away with avoiding multilib'ing -- rex +Requires: %{name}-devtools = %{version}-%{release} +%description devel +%{summary}. -%package devel -Summary: Development files for qt5-qtwebengine -Requires: qt5-qtwebengine = %{version}-%{release} qt5-qtbase-devel qt5-qtdeclarative-devel +%package devtools +Summary: WebEngine devtools_resources +Requires: %{name}%{?_isa} = %{version}-%{release} +%description devtools +Support for remote debugging. -%description devel -Qt5 - QtWebEngine components. +%package examples +Summary: Example files for %{name} -%package examples -Summary: Example files for qt5-qtwebengine +%description examples +%{summary}. + + +%if 0%{?docs} +%package doc +Summary: API documentation for %{name} +BuildRequires: qt5-qdoc +BuildRequires: qt5-qhelpgenerator +BuildRequires: qt5-qtbase-doc +Requires: qt5-qtbase-doc +BuildRequires: qt5-qtxmlpatterns-doc +Requires: qt5-qtxmlpatterns-doc +BuildRequires: qt5-qtdeclarative-doc +Requires: qt5-qtdeclarative-doc +BuildArch: noarch +%description doc +%{summary}. +%endif -%description examples -Example files for qt5-qtwebengine. %prep -%autosetup -n qtwebengine-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -p1 -sed -i -e 's!gpu//!gpu/!g' src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc -sed -i -e 's!audio_processing//!audio_processing/!g' src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft.cc \ - src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc -sed -i -e 's!\./!!g' src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \ - src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp -sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' src/3rdparty/chromium/build/toolchain/linux/BUILD.gn -cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ -cd src/3rdparty -python2 chromium/tools/licenses.py --file-template ../../tools/about_credits.tmpl \ - --entry-template ../../tools/about_credits_entry.tmpl credits >../webengine/doc/src/qtwebengine-3rdparty.qdoc -cd - +%setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20 + +mv pulse src/3rdparty/chromium/ + +pushd src/3rdparty/chromium +popd + +# Install python2 from rpms +mkdir python2 +pushd python2 +%ifarch aarch64 +rpm2cpio %{SOURCE101} | cpio -idm +%endif +%ifarch x86_64 +rpm2cpio %{SOURCE102} | cpio -idm +%endif +popd + +%patch2 -p1 -b .fix-extractcflag +%if !0%{?arm_neon} +%patch3 -p1 -b .no-neon +%endif +%patch4 -p1 -b .SIOCGSTAMP +%patch5 -p1 -b .QT_DEPRECATED_VERSION +%patch6 -p1 -b .angle_nullptr +%patch7 -p1 -b .hunspell_nullptr +#if 0%{?pipewire} +%patch8 -p1 -b .libpipewire-0.3 +#endif + +## upstream patches +%patch24 -p1 -b .aarch64-new-stat +%patch26 -p1 -b .use-python2 +%patch31 -p1 -b .TRUE +%patch32 -p1 -b .skia-missing-includes +%patch33 -p1 -b .aarch64-16kb-support + +# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we +# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS +sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \ + src/3rdparty/chromium/build/toolchain/linux/BUILD.gn + +#%if 0%{?use_system_re2} +## http://bugzilla.redhat.com/1337585 +## can't just delete, but we'll overwrite with system headers to be on the safe side +#cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ +#%endif + +%if 0 +#ifarch x86_64 +# enable this to force -g2 on x86_64 (most arches run out of memory with -g2) +# DISABLED BECAUSE OF: +# /usr/lib/rpm/find-debuginfo.sh: line 188: 3619 Segmentation fault +# (core dumped) eu-strip --remove-comment $r $g -f "$1" "$2" +sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri +%endif + +%if 0%{?docs} +# generate qtwebengine-3rdparty.qdoc, it is missing from the tarball +pushd src/3rdparty +%{__python3} chromium/tools/licenses.py \ + --file-template ../../tools/about_credits.tmpl \ + --entry-template ../../tools/about_credits_entry.tmpl \ + credits >../webengine/doc/src/qtwebengine-3rdparty.qdoc +popd +%endif + +# copy the Chromium license so it is installed with the appropriate name cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium +# consider doing this as part of the tarball creation step instead? rdieter +# fix/workaround +# fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory +if [ ! -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" ]; then +%_qt5_bindir/syncqt.pl -version %{version} +fi + +# abort if this doesn't get created by syncqt.pl +test -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" + + %build +# python2 path +export PATH=$(pwd)/python2/usr/bin:$PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/python2/usr/lib64 + export STRIP=strip export NINJAFLAGS="%{__ninja_common_opts}" export NINJA_PATH=%{__ninja} -%{qmake_qt5} CONFIG+="force_debug_info" QMAKE_EXTRA_ARGS+="-system-webengine-icu" . -%make_build + +%{qmake_qt5} \ + %{?debug_config:CONFIG+="%{debug_config}}" \ + CONFIG+="link_pulseaudio use_gold_linker" \ + %{?use_system_libicu:QMAKE_EXTRA_ARGS+="-system-webengine-icu"} \ + QMAKE_EXTRA_ARGS+="-webengine-kerberos" \ + %{?pipewire:QMAKE_EXTRA_ARGS+="-webengine-webrtc-pipewire"} \ + . + +# avoid %%make_build for now, the -O flag buffers output from intermediate build steps done via ninja +make + +%if 0%{?docs} +%make_build docs +%endif %install make install INSTALL_ROOT=%{buildroot} -echo -e "%_qt5_qtwebengine @@NAME@@\n%_qt5_qtwebengine_epoch @@EPOCH@@\n%_qt5_qtwebengine_version @@VERSION@@\n%_qt5_qtwebengine_evr @@EVR@@" > macros.qt5-qtwebengine -install -p -m644 -D macros.qt5-qtwebengine %{buildroot}%(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)/macros.qt5-qtwebengine -rm -f macros.qt5-qtwebengine -sed -i -e "s|@@NAME@@|qt5-qtwebengine|g" -e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" -e "s|@@VERSION@@|%{version}|g" \ - -e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" %{buildroot}%(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || \ - d=%{_sysconfdir}/rpm; echo $d)/macros.qt5-qtwebengine -install -d %{buildroot}%{_bindir} -cd %{buildroot}%{_qt5_bindir} -for i in * ; do ln -v ${i} %{buildroot}%{_bindir}/${i}; done -cd - -cd %{buildroot}%{_qt5_libdir} + +%if 0%{?docs} +make install_docs INSTALL_ROOT=%{buildroot} +%endif + +# rpm macros +install -p -m644 -D %{SOURCE10} \ + %{buildroot}%{rpm_macros_dir}/macros.qt5-qtwebengine +sed -i \ + -e "s|@@NAME@@|%{name}|g" \ + -e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" \ + -e "s|@@VERSION@@|%{version}|g" \ + -e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" \ + %{buildroot}%{rpm_macros_dir}/macros.qt5-qtwebengine + +## .prl/.la file love +# nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs +pushd %{buildroot}%{_qt5_libdir} for prl_file in libQt5*.prl ; do - sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} - if [ -f "$(basename ${prl_file} .prl).so" ]; then - rm -fv "$(basename ${prl_file} .prl).la"; sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} - fi + sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} + if [ -f "$(basename ${prl_file} .prl).so" ]; then + rm -fv "$(basename ${prl_file} .prl).la" + sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} + fi done -cd - -install -d %{buildroot}%{_qt5_datadir}/qtwebengine_dictionaries +# explicitly omit, at least until there's a real library installed associated with it -- rex +rm -fv Qt5WebEngineCore.la +popd + +mkdir -p %{buildroot}%{_qtwebengine_dictionaries_dir} + +# adjust cmake dep(s) to allow for using the same Qt5 that was used to build it +# using the lesser of %%version, %%_qt5_version %global lesser_version $(echo -e "%{version}\\n%{_qt5_version}" | sort -V | head -1) -sed -i -e "s|%{version} \${_Qt5WebEngine|%{lesser_version} \${_Qt5WebEngine|" %{buildroot}%{_qt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake +sed -i -e "s|%{version} \${_Qt5WebEngine|%{lesser_version} \${_Qt5WebEngine|" \ + %{buildroot}%{_qt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake + -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%ldconfig_scriptlets -%filetriggerin -- %{_datadir}/myspell +%filetriggerin -- %{_datadir}/hunspell while read filename ; do - case "$filename" in - *.dic) - bdicname=%{_qt5_datadir}/qtwebengine_dictionaries/`basename -s .dic "$filename"`.bdic - %{_qt5_bindir}/qwebengine_convert_dict "$filename" "$bdicname" &> /dev/null || : - ;; - esac + case "$filename" in + *.dic) + bdicname=%{_qtwebengine_dictionaries_dir}/`basename -s .dic "$filename"`.bdic + %{_qt5_bindir}/qwebengine_convert_dict "$filename" "$bdicname" &> /dev/null || : + ;; + esac done %files -%doc LICENSE.* src/webengine/doc/src/qtwebengine-3rdparty.qdoc -%{_bindir}/qwebengine_convert_dict +%license LICENSE.* +%if 0%{?docs} +%license src/webengine/doc/src/qtwebengine-3rdparty.qdoc +%endif +%{_qt5_libdir}/libQt5*.so.* %{_qt5_bindir}/qwebengine_convert_dict -%{_qt5_libdir}/{libQt5*.so.*,qt5/qml/*,qt5/libexec/QtWebEngineProcess} +%{_qt5_libdir}/qt5/qml/* +%{_qt5_libdir}/qt5/libexec/QtWebEngineProcess %{_qt5_plugindir}/designer/libqwebengineview.so -%{_qt5_datadir}/resources/ -%dir %{_qt5_datadir}/qtwebengine_dictionaries +%{_qt5_plugindir}/imageformats/libqpdf.so +%dir %{_qt5_datadir}/resources/ +%if ! 0%{?use_system_libicu} +%{_qt5_datadir}/resources/icudtl.dat +%endif +%{_qt5_datadir}/resources/qtwebengine_resources_100p.pak +%{_qt5_datadir}/resources/qtwebengine_resources_200p.pak +%{_qt5_datadir}/resources/qtwebengine_resources.pak +%dir %{_qtwebengine_dictionaries_dir} %dir %{_qt5_translationdir}/qtwebengine_locales %lang(am) %{_qt5_translationdir}/qtwebengine_locales/am.pak %lang(ar) %{_qt5_translationdir}/qtwebengine_locales/ar.pak @@ -212,15 +611,30 @@ done %lang(zh_TW) %{_qt5_translationdir}/qtwebengine_locales/zh-TW.pak %files devel -%(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)/macros.qt5-qtwebengine +%{rpm_macros_dir}/macros.qt5-qtwebengine %{_qt5_headerdir}/Qt*/ -%{_qt5_libdir}/{libQt5*.so,libQt5*.prl,cmake/Qt5*/,pkgconfig/Qt5*.pc} +%{_qt5_libdir}/libQt5*.so +%{_qt5_libdir}/libQt5*.prl +%{_qt5_libdir}/cmake/Qt5*/ +%{_qt5_libdir}/pkgconfig/Qt5*.pc %{_qt5_archdatadir}/mkspecs/modules/*.pri +%files devtools +%{_qt5_datadir}/resources/qtwebengine_devtools_resources.pak + %files examples %{_qt5_examplesdir}/ +%if 0%{?docs} +%files doc +%{_qt5_docdir}/* +%endif + + %changelog +* Fri Dec 16 2022 peijiankang -5.15.10-1 +- update upstream version to 5.15.10 + * Fri Jul 24 2020 maminjie -5.11.1-10 - Fix the build error for U16_NEXT calls diff --git a/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch b/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch new file mode 100644 index 0000000000000000000000000000000000000000..01ae8f665dd9a5166bbca467d3a88de52d75a81e --- /dev/null +++ b/qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch @@ -0,0 +1,372 @@ +From 0e827b4f741e57538c24d90b63659dbdb0992cb0 Mon Sep 17 00:00:00 2001 +From: Jorrit Jongma +Date: Tue, 12 Apr 2022 17:09:34 +0000 +Subject: [PATCH] [Backport] [PA] Support 16kb pagesize on Linux+ARM64 + +This makes the system pagesize a run-time property. + +ARM64 supports 4kb, 16kb, and 64kb page sizes. Previously, only 4kb +was supported by Chromium. This patch adds 16kb support, as is used +for example by Asahi Linux on M1 Macs. The rare 64kb case is still +not supported due to further changes needed to SlotSpanMetadata. + +The implementation follows the changes made to support run-time page +size on macOS. On macOS, the required constants are conveniently +injected before any code runs, while on Linux a function call is +needed, complicating initialization. + +The new PageCharacteristics structure holds the page size and shift +as std::atomic which are initialized on first use. + +Bug: 1301788 +Change-Id: I8ceead40de53ba7a2ec248bd6ef46f2a521dd29c +Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3545665 +Reviewed-by: Benoit Lize +Reviewed-by: Mark Mentovai +Commit-Queue: Mark Mentovai +Cr-Commit-Position: refs/heads/main@{#991588} + +(adapted from commit a704c3a94179e6f3abb28f090d096ced72657d7c) + +Bug-Fedora: 2144200 +Task-number: QTBUG-108674 +--- + .../address_space_randomization.h | 15 ++++++ + .../page_allocator_constants.h | 51 +++++++++++++++++- + .../partition_address_space.cc | 6 +++ + .../partition_allocator/partition_alloc.cc | 2 +- + .../partition_alloc_constants.h | 5 +- + .../address_space_randomization.h | 15 ++++++ + .../partition_allocator/page_allocator.cc | 8 +++ + .../page_allocator_constants.h | 52 ++++++++++++++++++- + .../partition_allocator/partition_alloc.cc | 2 +- + .../partition_alloc_constants.h | 5 +- + 10 files changed, 153 insertions(+), 8 deletions(-) + +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h b/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h +index e77003eab25..31ac05b86f5 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/address_space_randomization.h +@@ -119,6 +119,21 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + ++ #elif defined(OS_LINUX) ++ ++ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on ++ // page size and number of levels of translation pages used. We use ++ // 39-bit as base as all setups should support this, lowered to 38-bit ++ // as ASLROffset() could cause a carry. ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLRMask() { ++ return AslrMask(38); ++ } ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLROffset() { ++ return AslrAddress(0x1000000000ULL); ++ } ++ + #else + + // ARM64 on Linux has 39-bit user space. Use 38 bits since ASLROffset() +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h +index c42fe2835ff..dc7486608b9 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/page_allocator_constants.h +@@ -24,6 +24,31 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++// This should work for all POSIX (if needed), but currently all other ++// supported OS/architecture combinations use either hard-coded values ++// (such as x86) or have means to determine these values without needing ++// atomics (such as macOS on arm64). ++ ++// Page allocator constants are run-time constant ++#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) ++ ++#include ++#include ++ ++namespace base::internal { ++ ++// Holds the current page size and shift, where size = 1 << shift ++// Use PageAllocationGranularity(), PageAllocationGranularityShift() ++// to initialize and retrieve these values safely. ++struct PageCharacteristics { ++ std::atomic size; ++ std::atomic shift; ++}; ++extern PageCharacteristics page_characteristics; ++ ++} // namespace base::internal ++ + #else + + // When defined, page size constants are fixed at compile time. When not +@@ -36,11 +61,17 @@ + + #endif + ++namespace base { ++// Forward declaration, implementation below ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t ++PageAllocationGranularity(); ++} ++ + namespace { + + #if !defined(OS_APPLE) + +-constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int PageAllocationGranularityShift() { + #if defined(OS_WIN) || defined(ARCH_CPU_PPC64) + // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page + // sizes. Since 64kB is the de facto standard on the platform and binaries +@@ -49,6 +80,15 @@ constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { + return 16; // 64kB + #elif defined(_MIPS_ARCH_LOONGSON) + return 14; // 16kB ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) ++ // page sizes. Retrieve from or initialize cache. ++ int shift = base::internal::page_characteristics.shift.load(std::memory_order_relaxed); ++ if (UNLIKELY(shift == 0)) { ++ shift = __builtin_ctz((int)base::PageAllocationGranularity()); ++ base::internal::page_characteristics.shift.store(shift, std::memory_order_relaxed); ++ } ++ return shift; + #else + return 12; // 4kB + #endif +@@ -64,6 +104,15 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t + PageAllocationGranularity() { + #if defined(OS_APPLE) + return vm_page_size; ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or ++ // initialize cache. ++ int size = internal::page_characteristics.size.load(std::memory_order_relaxed); ++ if (UNLIKELY(size == 0)) { ++ size = getpagesize(); ++ internal::page_characteristics.size.store(size, std::memory_order_relaxed); ++ } ++ return size; + #else + return 1ULL << PageAllocationGranularityShift(); + #endif +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc +index 03883bcb113..90efc51c838 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_address_space.cc +@@ -75,6 +75,12 @@ void PartitionAddressSpace::UninitForTesting() { + internal::AddressPoolManager::GetInstance()->ResetForTesting(); + } + ++#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ ++PageCharacteristics page_characteristics; ++ ++#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ + #endif // defined(PA_HAS_64_BITS_POINTERS) + + } // namespace internal +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc +index daeb6d5cb17..7c434b5e697 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc.cc +@@ -522,7 +522,7 @@ static size_t PartitionPurgePage(internal::PartitionPage* page, + #if defined(PAGE_ALLOCATOR_CONSTANTS_ARE_CONSTEXPR) + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerSlotSpan) / SystemPageSize(); +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is + // always SystemPageSize() << 2, so regardless of what the run time page size +diff --git a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +index c8268ec30a0..f03ba1e4ab4 100644 +--- a/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/src/3rdparty/chromium/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -57,10 +57,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { + return 18; // 256 KiB + } +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || \ ++ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { +- return vm_page_shift + 2; ++ return PageAllocationGranularityShift() + 2; + } + #else + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h +index 28c8271fd68..3957e0cdf76 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h +@@ -120,6 +120,21 @@ AslrMask(uintptr_t bits) { + return AslrAddress(0x20000000ULL); + } + ++ #elif defined(OS_LINUX) ++ ++ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on ++ // page size and number of levels of translation pages used. We use ++ // 39-bit as base as all setups should support this, lowered to 38-bit ++ // as ASLROffset() could cause a carry. ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLRMask() { ++ return AslrMask(38); ++ } ++ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t ++ ASLROffset() { ++ return AslrAddress(0x1000000000ULL); ++ } ++ + #else + + // ARM64 on Linux has 39-bit user space. Use 38 bits since kASLROffset +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc +index 91d00d2fbca..597d5f84cb1 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc +@@ -255,5 +255,13 @@ uint32_t GetAllocPageErrorCode() { + return s_allocPageErrorCode; + } + ++#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ ++namespace internal { ++PageCharacteristics page_characteristics; ++} ++ ++#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ + } // namespace base + } // namespace pdfium +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h +index fdc65ac47b7..f826308839d 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h +@@ -24,6 +24,31 @@ + // elimination. + #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) + ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++// This should work for all POSIX (if needed), but currently all other ++// supported OS/architecture combinations use either hard-coded values ++// (such as x86) or have means to determine these values without needing ++// atomics (such as macOS on arm64). ++ ++// Page allocator constants are run-time constant ++#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) ++ ++#include ++#include ++ ++namespace pdfium::base::internal { ++ ++// Holds the current page size and shift, where size = 1 << shift ++// Use PageAllocationGranularity(), PageAllocationGranularityShift() ++// to initialize and retrieve these values safely. ++struct PageCharacteristics { ++ std::atomic size; ++ std::atomic shift; ++}; ++extern PageCharacteristics page_characteristics; ++ ++} // namespace base::internal ++ + #else + + // When defined, page size constants are fixed at compile time. When not +@@ -37,11 +62,18 @@ + #endif + + namespace pdfium { ++ ++namespace base { ++// Forward declaration, implementation below ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t ++PageAllocationGranularity(); ++} ++ + namespace { + + #if !defined(OS_APPLE) + +-constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { ++PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int PageAllocationGranularityShift() { + #if defined(OS_WIN) || defined(ARCH_CPU_PPC64) + // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page + // sizes. Since 64kB is the de facto standard on the platform and binaries +@@ -50,6 +82,15 @@ constexpr ALWAYS_INLINE int PageAllocationGranularityShift() { + return 16; // 64kB + #elif defined(_MIPS_ARCH_LOONGSON) + return 14; // 16kB ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) ++ // page sizes. Retrieve from or initialize cache. ++ int shift = base::internal::page_characteristics.shift.load(std::memory_order_relaxed); ++ if (UNLIKELY(shift == 0)) { ++ shift = __builtin_ctz((int)base::PageAllocationGranularity()); ++ base::internal::page_characteristics.shift.store(shift, std::memory_order_relaxed); ++ } ++ return shift; + #else + return 12; // 4kB + #endif +@@ -65,6 +106,15 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t + PageAllocationGranularity() { + #if defined(OS_APPLE) + return vm_page_size; ++#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64) ++ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or ++ // initialize cache. ++ int size = internal::page_characteristics.size.load(std::memory_order_relaxed); ++ if (UNLIKELY(size == 0)) { ++ size = getpagesize(); ++ internal::page_characteristics.size.store(size, std::memory_order_relaxed); ++ } ++ return size; + #else + return 1ULL << PageAllocationGranularityShift(); + #endif +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc +index 2e5e87fa7e6..89b9f6217a6 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc +@@ -486,7 +486,7 @@ static size_t PartitionPurgePage(internal::PartitionPage* page, bool discard) { + #if defined(PAGE_ALLOCATOR_CONSTANTS_ARE_CONSTEXPR) + constexpr size_t kMaxSlotCount = + (PartitionPageSize() * kMaxPartitionPagesPerSlotSpan) / SystemPageSize(); +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + // It's better for slot_usage to be stack-allocated and fixed-size, which + // demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is + // always SystemPageSize() << 2, so regardless of what the run time page size +diff --git a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h +index 71d63ba4146..a6d83626741 100644 +--- a/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h ++++ b/src/3rdparty/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h +@@ -50,10 +50,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { + return 18; // 256 KiB + } +-#elif defined(OS_APPLE) ++#elif defined(OS_APPLE) || \ ++ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64)) + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int + PartitionPageShift() { +- return vm_page_shift + 2; ++ return PageAllocationGranularityShift() + 2; + } + #else + PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int +-- +2.38.1 + diff --git a/qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch b/qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch new file mode 100644 index 0000000000000000000000000000000000000000..3771308bc1be4a5257b1f861918647647c911698 --- /dev/null +++ b/qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch @@ -0,0 +1,17 @@ +diff -up qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED_VERSION qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h +--- qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h.QT_DEPRECATED_VERSION 2021-06-24 07:34:27.991417071 -0500 ++++ qtwebengine-everywhere-src-5.15.5/src/webenginewidgets/api/qwebenginedownloaditem.h 2021-06-24 07:36:28.996937357 -0500 +@@ -120,9 +120,13 @@ public: + QString mimeType() const; + #if QT_DEPRECATED_SINCE(5, 14) + #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) ++#if QT_VERSION >= QT_VERSION_CHECK(5,14,0) + QT_DEPRECATED_VERSION_X(5, 14, "Use downloadDirectory() and downloadFileName() instead") ++#endif + QString path() const; ++#if QT_VERSION >= QT_VERSION_CHECK(5,14,0) + QT_DEPRECATED_VERSION_X(5, 14, "Use setDownloadDirectory() and setDownloadFileName() instead") ++#endif + void setPath(QString path); + #else + QT_DEPRECATED_X("Use downloadDirectory() and downloadFileName() instead") diff --git a/qtwebengine-SIOCGSTAMP.patch b/qtwebengine-SIOCGSTAMP.patch new file mode 100644 index 0000000000000000000000000000000000000000..7609f8545a514786e6f400f910e6aaee97278b58 --- /dev/null +++ b/qtwebengine-SIOCGSTAMP.patch @@ -0,0 +1,16 @@ +diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc +index c38d7fdfa..0a8b0fd8b 100644 +--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc ++++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/physical_socket_server.cc +@@ -72,6 +72,11 @@ typedef void* SockOptArg; + + #if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) + ++// Seems that kernel 5.2.0 renames this define to SIOCGSTAMP_OLD ++#ifndef SIOCGSTAMP ++#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ ++#endif ++ + int64_t GetSocketRecvTimestamp(int socket) { + struct timeval tv_ioctl; + int ret = ioctl(socket, SIOCGSTAMP, &tv_ioctl); diff --git a/qtwebengine-everywhere-5.15.5-use-python2.patch b/qtwebengine-everywhere-5.15.5-use-python2.patch new file mode 100644 index 0000000000000000000000000000000000000000..9626d27f48fb5e1c90ebe01f0a34ad442b39e0b3 --- /dev/null +++ b/qtwebengine-everywhere-5.15.5-use-python2.patch @@ -0,0 +1,35 @@ +diff --git a/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py b/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py +index 8af373102..b551c0fe2 100644 +--- a/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py ++++ b/src/3rdparty/chromium/third_party/catapult/common/py_vulcanize/py_vulcanize/generate.py +@@ -83,7 +83,7 @@ def _MinifyJS(input_js): + + with tempfile.NamedTemporaryFile() as _: + args = [ +- 'python', ++ 'python2', + rjsmin_path + ] + p = subprocess.Popen(args, +@@ -203,7 +203,7 @@ def _MinifyCSS(css_text): + os.path.join(py_vulcanize_path, 'third_party', 'rcssmin', 'rcssmin.py')) + + with tempfile.NamedTemporaryFile() as _: +- rcssmin_args = ['python', rcssmin_path] ++ rcssmin_args = ['python2', rcssmin_path] + p = subprocess.Popen(rcssmin_args, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, +diff --git a/src/webengine/module.pro b/src/webengine/module.pro +index 49a1086b2..afc89d49e 100644 +--- a/src/webengine/module.pro ++++ b/src/webengine/module.pro +@@ -76,7 +76,7 @@ qtConfig(webengine-testsupport) { + python = $$pythonPathForShell() + chromium_attributions.commands = \ + cd $$shell_quote($$shell_path($$PWD/../3rdparty)) && \ +- $$python chromium/tools/licenses.py \ ++ python2 chromium/tools/licenses.py \ + --file-template ../../tools/about_credits.tmpl \ + --entry-template ../../tools/about_credits_entry.tmpl credits \ + $$shell_quote($$shell_path($$OUT_PWD/chromium_attributions.qdoc)) diff --git a/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch b/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch new file mode 100644 index 0000000000000000000000000000000000000000..c9e46861c395f3afc51549270f31c0f6769752a6 --- /dev/null +++ b/qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch @@ -0,0 +1,24 @@ +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn.libpipewire-0.3 qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn.libpipewire-0.3 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/modules/desktop_capture/BUILD.gn 2022-02-18 09:43:31.402923179 -0600 +@@ -202,7 +202,7 @@ if (is_linux || is_chromeos) { + + if (rtc_link_pipewire) { + pkg_config("pipewire") { +- packages = [ "libpipewire-0.2" ] ++ packages = [ "libpipewire-0.3" ] + } + } else { + # When libpipewire is not directly linked, use stubs to allow for dlopening of +diff -up qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni.libpipewire-0.3 qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni +--- qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni.libpipewire-0.3 2021-12-15 10:09:27.000000000 -0600 ++++ qtwebengine-everywhere-src-5.15.8/src/3rdparty/chromium/third_party/webrtc/webrtc.gni 2022-02-18 12:35:13.895009491 -0600 +@@ -115,7 +115,7 @@ declare_args() { + rtc_use_pipewire = is_desktop_linux && use_sysroot + + # Set this to link PipeWire directly instead of using the dlopen. +- rtc_link_pipewire = false ++ rtc_link_pipewire = true + + # Enable to use the Mozilla internal settings. + build_with_mozilla = false diff --git a/qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch b/qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch deleted file mode 100644 index cac2e560c8e1b52e4f425cc06b687b366220b35e..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur qtwebengine-everywhere-src-5.10.0/src/buildtools/gn.pro qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose/src/buildtools/gn.pro ---- qtwebengine-everywhere-src-5.10.0/src/buildtools/gn.pro 2017-11-29 09:42:29.000000000 +0100 -+++ qtwebengine-everywhere-src-5.10.0-gn-bootstrap-verbose/src/buildtools/gn.pro 2017-12-25 18:51:46.953799125 +0100 -@@ -25,7 +25,7 @@ - gn_args = $$replace(gn_args, "use_incremental_linking=true ", "") - } - -- gn_configure = $$system_quote($$gn_bootstrap) --shadow --gn-gen-args=$$gn_args $$ninja_path -+ gn_configure = $$system_quote($$gn_bootstrap) --verbose --shadow --gn-gen-args=$$gn_args $$ninja_path - !system("cd $$system_quote($$system_path($$dirname(out))) && $$pythonPathForSystem() $$gn_configure") { - error("GN build error!") - } diff --git a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch b/qtwebengine-everywhere-src-5.10.0-linux-pri.patch deleted file mode 100644 index 162f63e15e7b2ba42f6906349303677ccdd6808c..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.10.0-linux-pri.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -ur qtwebengine-everywhere-src-5.10.0/src/core/config/linux.pri qtwebengine-everywhere-src-5.10.0-linux-pri/src/core/config/linux.pri ---- qtwebengine-everywhere-src-5.10.0/src/core/config/linux.pri 2017-11-29 09:42:29.000000000 +0100 -+++ qtwebengine-everywhere-src-5.10.0-linux-pri/src/core/config/linux.pri 2017-12-25 12:07:40.262411459 +0100 -@@ -157,3 +157,19 @@ - #qtConfig(webengine-system-jsoncpp): gn_args += use_system_jsoncpp=true - #qtConfig(webengine-system-libsrtp: gn_args += use_system_libsrtp=true - } -+ -+# yasm is only used on x86, and passing use_system_yasm makes the build fail on -+# other architectures (e.g., ARM), so make it conditional on the architecture -+contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") { -+ gn_args += use_system_yasm=true -+} -+ -+# link libpci instead of dlopening it, our Qt packaging depends on it anyway -+gn_args += linux_link_libpci=true -+ -+# run the unbundling script Chromium provides -+CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()" -+R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gn_files.py" -+R_G_F_PY_ARGS = "--system-libraries yasm" -+log("Running python $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}") -+!system("python $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed") diff --git a/qtwebengine-everywhere-src-5.10.1-gcc8-alignof.patch b/qtwebengine-everywhere-src-5.10.1-gcc8-alignof.patch deleted file mode 100644 index ff007b77cb386a0e39dc9fb6c17422fd2a9abfef..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.10.1-gcc8-alignof.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff -up qtwebengine-everywhere-src-5.10.1/src/3rdparty/chromium/mojo/public/c/system/macros.h.gcc8-alignof qtwebengine-everywhere-src-5.10.1/src/3rdparty/chromium/mojo/public/c/system/macros.h ---- qtwebengine-everywhere-src-5.10.1/src/3rdparty/chromium/mojo/public/c/system/macros.h.gcc8-alignof 2018-05-15 14:58:46.448912634 -0400 -+++ qtwebengine-everywhere-src-5.10.1/src/3rdparty/chromium/mojo/public/c/system/macros.h 2018-05-15 14:58:52.041784613 -0400 -@@ -18,7 +18,13 @@ - #endif - - // Like the C++11 |alignof| operator. --#if __cplusplus >= 201103L -+#if defined(__GNUC__) && __GNUC__ >= 8 -+// GCC 8 has changed the alignof operator to return the minimal alignment -+// required by the target ABI, instead of the preferred alignment. -+// This means that on 32-bit x86, it will return 4 instead of 8. -+// Use __alignof__ instead to avoid this. -+#define MOJO_ALIGNOF(type) __alignof__(type) -+#elif __cplusplus >= 201103L - #define MOJO_ALIGNOF(type) alignof(type) - #elif defined(__GNUC__) - #define MOJO_ALIGNOF(type) __alignof__(type) diff --git a/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch b/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch deleted file mode 100644 index 59da86ee34605611a6faa101f89574387f144b4f..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.11.0-no-icudtl-dat.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -up qtwebengine-everywhere-src-5.11.0/src/core/web_engine_library_info.cpp.no-icudtl-dat qtwebengine-everywhere-src-5.11.0/src/core/web_engine_library_info.cpp ---- qtwebengine-everywhere-src-5.11.0/src/core/web_engine_library_info.cpp.no-icudtl-dat 2018-06-14 09:23:48.931195271 -0500 -+++ qtwebengine-everywhere-src-5.11.0/src/core/web_engine_library_info.cpp 2018-06-14 09:27:26.248014325 -0500 -@@ -258,28 +258,12 @@ QString dictionariesPath() - - QString icuDataPath() - { -- static bool initialized = false; - static QString potentialResourcesPath = - #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD) - getResourcesPath(frameworkBundle()); - #else - QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources"); - #endif -- if (!initialized) { -- initialized = true; -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) { -- qWarning("Qt WebEngine ICU data not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath); -- } -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) { -- qWarning("Qt WebEngine ICU data not found at %s. Trying application directory...", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = QCoreApplication::applicationDirPath(); -- } -- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) { -- qWarning("Qt WebEngine ICU data not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath)); -- potentialResourcesPath = fallbackDir(); -- } -- } - - return potentialResourcesPath; - } diff --git a/qtwebengine-everywhere-src-5.11.1-fix-U16_NEXT-calls.patch b/qtwebengine-everywhere-src-5.11.1-fix-U16_NEXT-calls.patch deleted file mode 100644 index 5fe6764ef8a694238cc7fe773ce91291d63ba26b..0000000000000000000000000000000000000000 --- a/qtwebengine-everywhere-src-5.11.1-fix-U16_NEXT-calls.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 2b1230ac17f65fab59d2ad71e3b2b27a7071f125 Mon Sep 17 00:00:00 2001 -From: maminjie -Date: Thu, 23 Jul 2020 18:11:45 +0800 -Subject: [PATCH] fix U16_NEXT calls - ---- - .../chromium/third_party/WebKit/Source/core/dom/Document.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/core/dom/Document.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/core/dom/Document.cpp -index 7a4260bd3..004ccfd10 100644 ---- a/src/3rdparty/chromium/third_party/WebKit/Source/core/dom/Document.cpp -+++ b/src/3rdparty/chromium/third_party/WebKit/Source/core/dom/Document.cpp -@@ -5415,7 +5415,7 @@ static ParseQualifiedNameResult ParseQualifiedNameInternal( - - for (unsigned i = 0; i < length;) { - UChar32 c; -- U16_NEXT(characters, i, length, c) -+ U16_NEXT(characters, i, length, c); - if (c == ':') { - if (saw_colon) - return ParseQualifiedNameResult(kQNMultipleColons); --- -2.23.0 - diff --git a/qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch b/qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch new file mode 100644 index 0000000000000000000000000000000000000000..2b17be4dce221bcccd67e138cdb54c46aa45faae --- /dev/null +++ b/qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.11.3/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat qtwebengine-everywhere-src-5.11.3/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h +--- qtwebengine-everywhere-src-5.11.3/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h.aarch64-new-stat 2018-11-19 12:55:45.000000000 -0600 ++++ qtwebengine-everywhere-src-5.11.3/src/3rdparty/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h 2018-12-08 21:16:39.931896244 -0600 +@@ -5,6 +5,8 @@ + #ifndef SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_ + #define SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_ + ++#define __ARCH_WANT_NEW_STAT ++ + #include + + #if !defined(__NR_io_setup) diff --git a/qtwebengine-everywhere-src-5.11.1-clean.tar.xz b/qtwebengine-everywhere-src-5.15.10-clean.tar.xz similarity index 71% rename from qtwebengine-everywhere-src-5.11.1-clean.tar.xz rename to qtwebengine-everywhere-src-5.15.10-clean.tar.xz index 9969aaf9f253b57bb33ba17d8d01d7bec3d7fec9..853a92d3409da146b7817ee39564c67715a0b99a 100644 Binary files a/qtwebengine-everywhere-src-5.11.1-clean.tar.xz and b/qtwebengine-everywhere-src-5.15.10-clean.tar.xz differ diff --git a/qtwebengine-everywhere-src-5.15.5-TRUE.patch b/qtwebengine-everywhere-src-5.15.5-TRUE.patch new file mode 100644 index 0000000000000000000000000000000000000000..b61c9233de395eed8149c88c8b87623d087cd442 --- /dev/null +++ b/qtwebengine-everywhere-src-5.15.5-TRUE.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c +--- qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE 2021-05-28 07:05:45.000000000 -0500 ++++ qtwebengine-everywhere-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c 2021-06-24 09:44:41.592468805 -0500 +@@ -2004,7 +2004,7 @@ xmlEncOutputChunk(xmlCharEncodingHandler + #ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, out, outlen, in, inlen, +- TRUE); ++ 1); + } + #endif /* LIBXML_ICU_ENABLED */ + else { diff --git a/qtwebengine-fix-pluse-stubs.patch b/qtwebengine-fix-pluse-stubs.patch deleted file mode 100644 index 3635390df85cbf6dfd491f5ab778052e6ff1cad2..0000000000000000000000000000000000000000 --- a/qtwebengine-fix-pluse-stubs.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0a041a9441219398a668a74f5ae0f5b698299237 Mon Sep 17 00:00:00 2001 -Subject: [PATCH] fix pluse stubs - ---- - src/3rdparty/chromium/media/audio/pulse/pulse.sigs | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/3rdparty/chromium/media/audio/pulse/pulse.sigs b/src/3rdparty/chromium/media/audio/pulse/pulse.sigs -index 522efcb..bb15185 100644 ---- a/src/3rdparty/chromium/media/audio/pulse/pulse.sigs -+++ b/src/3rdparty/chromium/media/audio/pulse/pulse.sigs -@@ -23,11 +23,11 @@ pa_operation* pa_context_get_server_info(pa_context* c, pa_server_info_cb_t cb, - pa_operation* pa_context_get_source_info_by_index(pa_context* c, uint32_t idx, pa_source_info_cb_t cb, void* userdata); - pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata); - pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata); --pa_context_state_t pa_context_get_state(pa_context* c); -+pa_context_state_t pa_context_get_state(const pa_context* c); - pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name); - pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata); - void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata); --pa_operation_state_t pa_operation_get_state(pa_operation* o); -+pa_operation_state_t pa_operation_get_state(const pa_operation* o); - void pa_context_unref(pa_context* c); - void pa_operation_unref(pa_operation* o); - int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes); -@@ -37,21 +37,21 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_stream_success_cb_t cb, voi - int pa_stream_disconnect(pa_stream* s); - int pa_stream_drop(pa_stream *p); - pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata); --uint32_t pa_stream_get_device_index(pa_stream* s); -+uint32_t pa_stream_get_device_index(const pa_stream* s); - int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative); --pa_stream_state_t pa_stream_get_state(pa_stream* p); -+pa_stream_state_t pa_stream_get_state(const pa_stream* p); - pa_stream* pa_stream_new(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map * map); - pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p); - pa_proplist* pa_proplist_new(void); - void pa_proplist_free(pa_proplist* p); - int pa_proplist_sets(pa_proplist* p, const char* key, const char* value); --size_t pa_stream_readable_size(pa_stream *p); -+size_t pa_stream_readable_size(const pa_stream *p); - int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes); - void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata); - void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata); - int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek); - void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata); - void pa_stream_unref(pa_stream* s); --int pa_context_errno(pa_context *c); -+int pa_context_errno(const pa_context *c); - const char* pa_strerror(int error); - pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned channels, pa_volume_t v); --- -2.23.0 - diff --git a/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch b/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch new file mode 100644 index 0000000000000000000000000000000000000000..fcbc6b5dfce508657b85167580b14b09c1f72961 --- /dev/null +++ b/qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch @@ -0,0 +1,11 @@ +diff --git a/src/buildtools/config/functions.pri b/src/buildtools/config/functions.pri +index 8c11faa16..191d3d623 100644 +--- a/src/buildtools/config/functions.pri ++++ b/src/buildrools/config/functions.pri +@@ -1,5 +1,5 @@ + defineReplace(qtwebengine_extractCFlag) { +- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS ++ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE + OPTION = $$find(CFLAGS, $$1) + OPTION = $$split(OPTION, =) + PARAM = $$member(OPTION, 1) diff --git a/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch b/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch deleted file mode 100644 index 4fcd5928ce320810d4ad41d3ab935f1e305c1def..0000000000000000000000000000000000000000 --- a/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur qtwebengine-opensource-src-5.9.0/mkspecs/features/functions.prf qtwebengine-opensource-src-5.9.0-fix-extractcflag/mkspecs/features/functions.prf ---- qtwebengine-opensource-src-5.9.0/mkspecs/features/functions.prf 2017-05-19 06:22:04.000000000 +0200 -+++ qtwebengine-opensource-src-5.9.0-fix-extractcflag/mkspecs/features/functions.prf 2017-06-08 00:36:16.303520106 +0200 -@@ -302,7 +302,7 @@ - } - - defineReplace(extractCFlag) { -- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS -+ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE - OPTION = $$find(CFLAGS, $$1) - OPTION = $$split(OPTION, =) - return ($$member(OPTION, 1)) diff --git a/qtwebengine-opensource-src-5.9.0-no-neon.patch b/qtwebengine-opensource-src-5.9.0-no-neon.patch new file mode 100644 index 0000000000000000000000000000000000000000..308c5bc1d641b33e6f98f277947728e7001686e8 --- /dev/null +++ b/qtwebengine-opensource-src-5.9.0-no-neon.patch @@ -0,0 +1,15 @@ +diff --git a/src/buildtools/config/linux.pri b/src/buildtools/config/linux.pri +index f45c418fe..f6c7b714e 100644 +--- a/src/buildtools/config/linux.pri ++++ b/src/buildtools/config/linux.pri +@@ -87,7 +87,9 @@ contains(QT_ARCH, "arm") { + gn_args += arm_use_neon=false + # If the toolchain does not explicitly specify to use NEON instructions + # we use arm_neon_optional for ARMv7 +- equals(MARMV, 7): gn_args += arm_optionally_use_neon=true ++ # Disable NEON entirely for now, if set in the specfile, e.g., to ++ # work around some build failure. ++ # equals(MARMV, 7): gn_args += arm_optionally_use_neon=true + } + } + diff --git a/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch deleted file mode 100644 index fd11fae9f3852c542a27992329f8a2249a1e90de..0000000000000000000000000000000000000000 --- a/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch +++ /dev/null @@ -1,92 +0,0 @@ -diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn ---- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn 2017-05-18 16:51:44.000000000 +0200 -+++ qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn 2017-06-10 02:41:10.317340598 +0200 -@@ -196,9 +196,6 @@ - ] - if (arm_optionally_use_neon) { - # Run-time NEON detection. -- deps = [ "//third_party/android_tools:cpu_features" ] -- # To get the __android_log_print routine -- libs = [ "log" ] - # Detection routine - sources += [ "sp/src/arm/detect.c" ] - } -diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c ---- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2017-05-18 16:51:44.000000000 +0200 -+++ qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2017-06-10 02:38:30.593809570 +0200 -@@ -9,13 +9,57 @@ - * - */ - --#include -- --#include "android/log.h" - #include "dl/sp/api/omxSP.h" - -+// For ArmCpuCaps() -+#include -+#include -+ -+// based on libvpx arm_cpudetect.c -+static int ArmCpuCaps(const char* cpuinfo_name) { -+ char cpuinfo_line[512]; -+ FILE* f = fopen(cpuinfo_name, "r"); -+ if (!f) { -+ // Assume Neon if /proc/cpuinfo is unavailable. -+ // This will occur for Chrome sandbox for Pepper or Render process. -+ return 1; -+ } -+ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) { -+ if (memcmp(cpuinfo_line, "Features", 8) == 0) { -+ char* p = strstr(cpuinfo_line, " neon"); -+ if (p && (p[5] == ' ' || p[5] == '\n')) { -+ fclose(f); -+ return 1; -+ } -+ // aarch64 uses asimd for Neon. -+ p = strstr(cpuinfo_line, " asimd"); -+ if (p && (p[6] == ' ' || p[6] == '\n')) { -+ fclose(f); -+ return 1; -+ } -+ } -+ } -+ fclose(f); -+ return 0; -+} -+ - int omxSP_HasArmNeon() { -- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; -+#if defined(__arm__) || defined(__aarch64__) -+// gcc -mfpu=neon defines __ARM_NEON__ -+// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon. -+// For Linux, /proc/cpuinfo can be tested but without that assume Neon. -+#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__) -+ return 1; -+// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon -+// flag in it. -+// So for aarch64, neon enabling is hard coded here. -+#elif defined(__aarch64__) -+ return 1; -+#else -+ // Linux arm parse text file for neon detect. -+ return ArmCpuCaps("/proc/cpuinfo"); -+#endif -+#endif // __arm__ - } - - static void SetFFTRoutines() { -@@ -24,13 +68,9 @@ - * forward and inverse FFTs - */ - if (omxSP_HasArmNeon()) { -- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT", -- "Using NEON FFT"); - omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs; - omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs; - } else { -- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT", -- "Using non-NEON FFT"); - omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp; - omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp; - } diff --git a/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch b/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch deleted file mode 100644 index a21802aa4238b3a415bbacdcbe088779941122ca..0000000000000000000000000000000000000000 --- a/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn qtwebengine-opensource-src-5.9.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn ---- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-05-18 16:51:44.000000000 +0200 -+++ qtwebengine-opensource-src-5.9.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-06-10 13:20:14.959007488 +0200 -@@ -93,9 +93,7 @@ - if (is_linux) { - defines += [ "WEBRTC_THREAD_RR" ] - -- if (!build_with_chromium) { -- deps += [ ":cpu_features_linux" ] -- } -+ deps += [ ":cpu_features_linux" ] - - libs += [ "rt" ] - } diff --git a/qtwebengine-opensource-src-5.9.2-arm-fpu-fix.patch b/qtwebengine-opensource-src-5.9.2-arm-fpu-fix.patch deleted file mode 100644 index a4751996888cdb5ea83c1eb7f95f5d069abf2356..0000000000000000000000000000000000000000 --- a/qtwebengine-opensource-src-5.9.2-arm-fpu-fix.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -ur qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri ---- qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri 2017-05-19 06:22:04.000000000 +0200 -+++ qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri 2017-06-13 14:51:26.986633933 +0200 -@@ -64,6 +64,7 @@ - gn_args += arm_use_neon=true - } else { - MFPU = $$extractCFlag("-mfpu=.*") -+ !isEmpty(MFPU): gn_args += arm_fpu=\"$$MFPU\" - !isEmpty(MFPU):contains(MFPU, ".*neon.*") { - gn_args += arm_use_neon=true - } else { diff --git a/qtwebengine-release.sh b/qtwebengine-release.sh new file mode 100755 index 0000000000000000000000000000000000000000..a05c1007524594917696e7b2c9d6876e8da537ae --- /dev/null +++ b/qtwebengine-release.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -x +VERSION=5.15.8 +CHROMIUMHASH=`wget https://code.qt.io/cgit/qt/qtwebengine.git/tree/src/3rdparty?h=$VERSION -q --content-on-error -O - | grep "Bad object name: " | sed 's/^.*Bad object name: \([0-9a-f]\{40\}\).*$/\1/g'` +rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-src-$VERSION +wget https://github.com/qt/qtwebengine/archive/$VERSION.tar.gz -O qtwebengine-$VERSION.tar.gz || exit $? +tar xzf qtwebengine-$VERSION.tar.gz || exit $? +wget https://github.com/qt/qtwebengine-chromium/archive/$CHROMIUMHASH.tar.gz -O qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +tar xzf qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +mv qtwebengine-$VERSION qtwebengine-everywhere-src-$VERSION || exit $? +(cd qtwebengine-everywhere-src-$VERSION ; syncqt.pl -version $VERSION ) || exit $? +rmdir qtwebengine-everywhere-src-$VERSION/src/3rdparty || exit $? +mv qtwebengine-chromium-$CHROMIUMHASH qtwebengine-everywhere-src-$VERSION/src/3rdparty || exit $? +XZ_OPT="-9 -T2" tar cJf qtwebengine-everywhere-src-$VERSION.tar.xz qtwebengine-everywhere-src-$VERSION || exit $? +rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-src-$VERSION diff --git a/qtwebengine-skia-missing-includes.patch b/qtwebengine-skia-missing-includes.patch new file mode 100644 index 0000000000000000000000000000000000000000..8402a73bb480b40b54f45c5b3f22b51a4f047f77 --- /dev/null +++ b/qtwebengine-skia-missing-includes.patch @@ -0,0 +1,15 @@ +diff --git a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +index 7260365..503ed08 100644 +--- a/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp ++++ b/src/3rdparty/chromium/third_party/skia/src/utils/SkParseColor.cpp +@@ -8,6 +8,10 @@ + + #include "include/utils/SkParse.h" + ++#include ++#include ++#include ++ + static constexpr const char* gColorNames[] = { + "aliceblue", + "antiquewhite", diff --git a/test b/test new file mode 100644 index 0000000000000000000000000000000000000000..a3596bc8aa797dba2f64928791b32e6683326a61 --- /dev/null +++ b/test @@ -0,0 +1,695 @@ +%global qt_module qtwebengine + +%global _hardened_build 1 + +# package-notes causes FTBFS (#2043178) +%undefine _package_note_file + +# define to build docs, may need to undef this for bootstrapping +# where qt5-qttools (qt5-doctools) builds are not yet available +%global docs 0 + +#%if 0%{?fedora} +# need libvpx >= 1.8.0 (need commit 297dfd869609d7c3c5cd5faa3ebc7b43a394434e) +%global use_system_libvpx 0 +# For screen sharing on Wayland, currently Fedora only thing - no epel +#global pipewire 1 +#%endif +#%if 0%{?fedora} > 30 || 0%{?epel} > 7 +# need libwebp >= 0.6.0 +%global use_system_libwebp 1 +%global use_system_jsoncpp 1 +#%if 0%{?rhel} && 0%{?rhel} == 9 +#%global use_system_re2 0 +#%else +#%global use_system_re2 1 +#%endif +#%endif + +#%if 0%{?fedora} > 32 +# need libicu >= 65, only currently available on f33+ +%global use_system_libicu 1 +#%endif + +# NEON support on ARM (detected at runtime) - disable this if you are hitting +# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 +#global arm_neon 1 + +# the QMake CONFIG flags to force debugging information to be produced in +# release builds, and for all parts of the code +%ifarch %{arm} aarch64 +# the ARM builder runs out of memory during linking with the full setting below, +# so omit debugging information for the parts upstream deems it dispensable for +# (webcore, v8base) +%global debug_config %{nil} +%else +%global debug_config force_debug_info +# webcore_debug v8base_debug +%endif + +#global prerelease rc + +# spellchecking dictionary directory +%global _qtwebengine_dictionaries_dir %{_qt5_datadir}/qtwebengine_dictionaries + +%global rpm_macros_dir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) + +# exclude plugins +%global __provides_exclude ^lib.*plugin\\.so.*$ +# and designer plugins +%global __provides_exclude_from ^%{_qt5_plugindir}/.*\\.so$ + +Summary: Qt5 - QtWebEngine components +Name: qt5-qtwebengine +Version: 5.15.10 +Release: 1 + +# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details +# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html +# The other licenses are from Chromium and the code it bundles +License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2) +URL: http://www.qt.io +# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg +# ./qtwebengine-release.sh +# ./clean_qtwebengine.sh 5.15.1 +Source0: qtwebengine-everywhere-src-%{version}-clean.tar.xz +# release script used above +Source1: qtwebengine-release.sh +# cleanup scripts used above +Source2: clean_qtwebengine.sh +Source3: clean_ffmpeg.sh +Source4: get_free_ffmpeg_source_files.py +# macros +Source10: macros.qt5-qtwebengine + +# pulseaudio headers +Source20: pulseaudio-12.2-headers.tar.gz + +## Python2 Sources +## src.rpm is Fedora spec with tests and tkinter turned off +## binary rpms have been built on epel9 +Source100: python2.7-2.7.18-19.el9.1.src.rpm +Source101: python2.7-2.7.18-19.el9.1.aarch64.rpm +Source102: python2.7-2.7.18-19.el9.1.x86_64.rpm + +# fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the +# ARM flags with our %%qmake_qt5 macro, including for the next patch +Patch2: qtwebengine-opensource-src-5.12.4-fix-extractcflag.patch +# disable NEON vector instructions on ARM where the NEON code FTBFS due to +# GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495 +Patch3: qtwebengine-opensource-src-5.9.0-no-neon.patch +# workaround FTBFS against kernel-headers-5.2.0+ +Patch4: qtwebengine-SIOCGSTAMP.patch +# fix build when using qt < 5.14 +Patch5: qtwebengine-5.15.0-QT_DEPRECATED_VERSION.patch +# gcc-12 FTBFS "use of deleted function" +Patch6: chromium-angle-nullptr.patch +Patch7: chromium-hunspell-nullptr.patch +Patch8: qtwebengine-everywhere-5.15.8-libpipewire-0.3.patch +# Fix/workaround FTBFS on aarch64 with newer glibc +Patch24: qtwebengine-everywhere-src-5.11.3-aarch64-new-stat.patch +# Use Python2 +Patch26: qtwebengine-everywhere-5.15.5-use-python2.patch +# FTBFS TRUE/FALSE undeclared +Patch31: qtwebengine-everywhere-src-5.15.5-TRUE.patch +Patch32: qtwebengine-skia-missing-includes.patch +# Fix QtWebEngine on Apple M1 hardware (patch from Arch Linux ARM) +## Cf. https://bugreports.qt.io/browse/QTBUG-108674 +## Cf. https://bugzilla.redhat.com/show_bug.cgi?id=2144200 +## From: https://chromium-review.googlesource.com/c/chromium/src/+/3545665 +Patch33: qtwebengine-5.15-Backport-of-16k-page-support-on-aarch64.patch + +## Upstream patches: +#%if 0%{?fedora} || 0%{?epel} > 7 +# handled by qt5-srpm-macros, which defines %%qt5_qtwebengine_arches +#ExclusiveArch: %{qt5_qtwebengine_arches} +#%endif + +BuildRequires: make +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qtbase-private-devel +# TODO: check of = is really needed or if >= would be good enough -- rex +%{?_qt5:Requires: %{_qt5}%{?_isa} = %{_qt5_version}} +BuildRequires: qt5-qtdeclarative-devel +BuildRequires: qt5-qtxmlpatterns-devel +BuildRequires: qt5-qtlocation-devel +BuildRequires: qt5-qtsensors-devel +BuildRequires: qt5-qtsvg-devel +BuildRequires: qt5-qtwebchannel-devel +BuildRequires: qt5-qttools-static +# for examples? +BuildRequires: qt5-qtquickcontrols2-devel +BuildRequires: ninja-build +BuildRequires: cmake +BuildRequires: bison +BuildRequires: flex +BuildRequires: gcc-c++ +# gn links statically (for now) +BuildRequires: libstdc++-static +BuildRequires: git-core +BuildRequires: gperf +BuildRequires: krb5-devel +%if 0%{?use_system_libicu} +BuildRequires: libicu-devel >= 65 +%endif +BuildRequires: libjpeg-devel +BuildRequires: nodejs +#%if 0%{?use_system_re2} +#BuildRequires: re2-devel +#%endif +%if 0%{?pipewire} +BuildRequires: pkgconfig(libpipewire-0.3) +%endif +BuildRequires: snappy-devel +BuildRequires: pkgconfig(expat) +BuildRequires: pkgconfig(gobject-2.0) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(fontconfig) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(egl) +%if 0%{?use_system_jsoncpp} +BuildRequires: pkgconfig(jsoncpp) +%endif +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(libudev) +%if 0%{?use_system_libwebp} +BuildRequires: pkgconfig(libwebp) >= 0.6.0 +%endif +BuildRequires: pkgconfig(harfbuzz) +BuildRequires: pkgconfig(libdrm) +BuildRequires: pkgconfig(opus) +BuildRequires: pkgconfig(libevent) +BuildRequires: pkgconfig(poppler-cpp) +BuildRequires: pkgconfig(zlib) +#%if 0%{?fedora} && 0%{?fedora} < 30 +#BuildRequires: pkgconfig(minizip) +#%else +BuildConflicts: minizip-devel +Provides: bundled(minizip) = 1.2 +#%endif +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xcursor) +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(xrender) +BuildRequires: pkgconfig(xdamage) +BuildRequires: pkgconfig(xcomposite) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(xrandr) +BuildRequires: pkgconfig(xscrnsaver) +BuildRequires: pkgconfig(libcap) +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(alsa) +BuildRequires: pkgconfig(libpci) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(lcms2) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbfile) +## https://bugreports.qt.io/browse/QTBUG-59094 +## requires libxml2 built with icu support +#BuildRequires: pkgconfig(libxslt) pkgconfig(libxml-2.0) +BuildRequires: perl-interpreter +# fesco exception to allow python2 use: https://pagure.io/fesco/issue/2208 +# per https://fedoraproject.org/wiki/Changes/RetirePython2#FESCo_exceptions +# Only the interpreter is needed +#%if 0%{?fedora} > 29 || 0%{?rhel} > 8 +#%if 0%{?rhel} && 0%{?rhel} == 9 +BuildRequires: python3 +#%else +#BuildRequires: %{__python2} +#%endif +#%else +#BuildRequires: python2 +#BuildRequires: python2-rpm-macros +#%endif +%if 0%{?use_system_libvpx} +BuildRequires: pkgconfig(vpx) >= 1.8.0 +%endif +# For python on EPEL9, These get pulled in via python2 +BuildRequires: libtirpc +BuildRequires: libnsl2 +BuildRequires: python-rpm-macros + +# extra (non-upstream) functions needed, see +# src/3rdparty/chromium/third_party/sqlite/README.chromium for details +#BuildRequires: pkgconfig(sqlite3) + +## Various bundled libraries that Chromium does not support unbundling :-( +## Only the parts actually built are listed. +## Query for candidates: +## grep third_party/ build.log | sed 's!third_party/!\nthird_party/!g' | \ +## grep third_party/ | sed 's!^third_party/!!g' | sed 's!/.*$!!g' | \ +## sed 's/\;.*$//g' | sed 's/ .*$//g' | sort | uniq | less +## some false positives where only shim headers are generated for some reason +## some false positives with dummy placeholder dirs (swiftshader, widevine) +## some false negatives where a header-only library is bundled (e.g. x86inc) +## Spot's chromium.spec also has a list that I checked. + +# Of course, Chromium itself is bundled. It cannot be unbundled because it is +# not a library, but forked (modified) application code. +Provides: bundled(chromium) = 87.0.4280.144 + +# Bundled in src/3rdparty/chromium/third_party: +# Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, +# except where specified otherwise. +# Note that many of those libraries are git snapshots, so version numbers are +# necessarily approximate. +# Also note that the list is probably not complete anymore due to Chromium +# adding more and more bundled stuff at every release, some of which (but not +# all) is actually built in QtWebEngine. +# src/3rdparty/chromium/third_party/angle/doc/ChoosingANGLEBranch.md points to +# http://omahaproxy.appspot.com/deps.json?version=87.0.4280.144 chromium_branch +Provides: bundled(angle) = 2422 +# Google's fork of OpenSSL +# We cannot build against NSS instead because it no longer works with NSS 3.21: +# HTTPS on, ironically, Google's sites (Google, YouTube, etc.) stops working +# completely and produces only ERR_SSL_PROTOCOL_ERROR errors: +# http://kaosx.us/phpBB3/viewtopic.php?t=1235 +# https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1520568 +# So we have to do what Chromium now defaults to (since 47): a "chimera build", +# i.e., use the BoringSSL code and the system NSS certificates. +Provides: bundled(boringssl) +Provides: bundled(brotli) +# Don't get too excited. MPEG and other legally problematic stuff is stripped +# out. See clean_qtwebengine.sh, clean_ffmpeg.sh, and +# get_free_ffmpeg_source_files.py. +# see src/3rdparty/chromium/third_party/ffmpeg/Changelog for the version number +Provides: bundled(ffmpeg) = 4.3 +Provides: bundled(hunspell) = 1.6.0 +Provides: bundled(iccjpeg) +# bundled as "khronos", headers only +Provides: bundled(khronos_headers) +# bundled as "leveldatabase" +Provides: bundled(leveldb) = 1.22 +# bundled as "libjingle_xmpp" +Provides: bundled(libjingle) +# see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number +Provides: bundled(libsrtp) = 2.2.0 +%if !0%{?use_system_libvpx} +Provides: bundled(libvpx) = 1.8.2 +%endif +%if !0%{?use_system_libwebp} +Provides: bundled(libwebp) = 1.1.0-28-g55a080e5 +%endif +# bundled as "libxml" +# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h +# post 2.9.9 snapshot?, 2.9.9-0b3c64d9f2f3e9ce1a98d8f19ee7a763c87e27d5 +Provides: bundled(libxml2) = 2.9.10 +# see src/3rdparty/chromium/third_party/libxslt/linux/config.h for version +Provides: bundled(libxslt) = 1.1.34 +Provides: bundled(libXNVCtrl) = 302.17 +Provides: bundled(libyuv) = 1768 +Provides: bundled(modp_b64) +Provides: bundled(ots) +Provides: bundled(re2) +# see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version +Provides: bundled(protobuf) = 3.9.0 +Provides: bundled(qcms) = 4 +Provides: bundled(skia) +# bundled as "smhasher" +Provides: bundled(SMHasher) = 0-147 +Provides: bundled(sqlite) = 3.35.5 +Provides: bundled(usrsctp) +Provides: bundled(webrtc) = 90 + +%ifarch %{ix86} x86_64 +# bundled by ffmpeg and libvpx: +# header (for assembly) only +Provides: bundled(x86inc) +%endif + +# Bundled in src/3rdparty/chromium/base/third_party: +# Check src/3rdparty/chromium/third_party/base/*/README.chromium for version +# numbers, except where specified otherwise. +Provides: bundled(dynamic_annotations) = 4384 +Provides: bundled(superfasthash) = 0 +Provides: bundled(symbolize) +# bundled as "valgrind", headers only +Provides: bundled(valgrind.h) +# bundled as "xdg_mime" +Provides: bundled(xdg-mime) +# bundled as "xdg_user_dirs" +Provides: bundled(xdg-user-dirs) = 0.10 + +# Bundled in src/3rdparty/chromium/net/third_party: +# Check src/3rdparty/chromium/third_party/net/*/README.chromium for version +# numbers, except where specified otherwise. +Provides: bundled(mozilla_security_manager) = 1.9.2 + +# Bundled in src/3rdparty/chromium/url/third_party: +# Check src/3rdparty/chromium/third_party/url/*/README.chromium for version +# numbers, except where specified otherwise. +# bundled as "mozilla", file renamed and modified +Provides: bundled(nsURLParsers) + +# Bundled outside of third_party, apparently not considered as such by Chromium: +Provides: bundled(mojo) +# see src/3rdparty/chromium/v8/include/v8_version.h for the version number +Provides: bundled(v8) = 8.7.220.35 +# bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc) +# The version number is 5.3, the last version that upstream released, years ago: +# http://www.netlib.org/fdlibm/readme +Provides: bundled(fdlibm) = 5.3 + +%{?_qt5_version:Requires: qt5-qtbase%{?_isa} = %{_qt5_version}} + +%if 0%{?use_system_icu} +# Those versions were built with bundled ICU and want the data file. +Conflicts: qt5-qtwebengine-freeworld < 5.15.2-2 +%endif + +#%if 0%{?rhel} == 7 +#BuildRequires: devtoolset-7-toolchain +#%endif + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt5-qtbase-devel%{?_isa} +Requires: qt5-qtdeclarative-devel%{?_isa} +# not arch'd for now, see if can get away with avoiding multilib'ing -- rex +Requires: %{name}-devtools = %{version}-%{release} +%description devel +%{summary}. + +%package devtools +Summary: WebEngine devtools_resources +Requires: %{name}%{?_isa} = %{version}-%{release} +%description devtools +Support for remote debugging. + +%package examples +Summary: Example files for %{name} + +%description examples +%{summary}. + + +%if 0%{?docs} +%package doc +Summary: API documentation for %{name} +BuildRequires: qt5-qdoc +BuildRequires: qt5-qhelpgenerator +BuildRequires: qt5-qtbase-doc +Requires: qt5-qtbase-doc +BuildRequires: qt5-qtxmlpatterns-doc +Requires: qt5-qtxmlpatterns-doc +BuildRequires: qt5-qtdeclarative-doc +Requires: qt5-qtdeclarative-doc +BuildArch: noarch +%description doc +%{summary}. +%endif + + +%prep +%setup -q -n %{qt_module}-everywhere-src-%{version}%{?prerelease:-%{prerelease}} -a20 + +mv pulse src/3rdparty/chromium/ + +pushd src/3rdparty/chromium +popd + +#%if 0%{?rhel} && 0%{?rhel} == 9 +# Install python2 from rpms +mkdir python2 +pushd python2 +%ifarch aarch64 +rpm2cpio %{SOURCE101} | cpio -idm +%endif +%ifarch x86_64 +rpm2cpio %{SOURCE102} | cpio -idm +%endif +popd +#%endif + +%patch2 -p1 -b .fix-extractcflag +%if !0%{?arm_neon} +%patch3 -p1 -b .no-neon +%endif +%patch4 -p1 -b .SIOCGSTAMP +%patch5 -p1 -b .QT_DEPRECATED_VERSION +%patch6 -p1 -b .angle_nullptr +%patch7 -p1 -b .hunspell_nullptr +#if 0%{?pipewire} +%patch8 -p1 -b .libpipewire-0.3 +#endif + +## upstream patches +%patch24 -p1 -b .aarch64-new-stat +%patch26 -p1 -b .use-python2 +%patch31 -p1 -b .TRUE +%patch32 -p1 -b .skia-missing-includes +%patch33 -p1 -b .aarch64-16kb-support + +# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we +# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS +sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \ + src/3rdparty/chromium/build/toolchain/linux/BUILD.gn + +#%if 0%{?use_system_re2} +## http://bugzilla.redhat.com/1337585 +## can't just delete, but we'll overwrite with system headers to be on the safe side +#cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/ +#%endif + +%if 0 +#ifarch x86_64 +# enable this to force -g2 on x86_64 (most arches run out of memory with -g2) +# DISABLED BECAUSE OF: +# /usr/lib/rpm/find-debuginfo.sh: line 188: 3619 Segmentation fault +# (core dumped) eu-strip --remove-comment $r $g -f "$1" "$2" +sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri +%endif + +%if 0%{?docs} +# generate qtwebengine-3rdparty.qdoc, it is missing from the tarball +pushd src/3rdparty +%{__python3} chromium/tools/licenses.py \ + --file-template ../../tools/about_credits.tmpl \ + --entry-template ../../tools/about_credits_entry.tmpl \ + credits >../webengine/doc/src/qtwebengine-3rdparty.qdoc +popd +%endif + +# copy the Chromium license so it is installed with the appropriate name +cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium + +# consider doing this as part of the tarball creation step instead? rdieter +# fix/workaround +# fatal error: QtWebEngineCore/qtwebenginecoreglobal.h: No such file or directory +if [ ! -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" ]; then +%_qt5_bindir/syncqt.pl -version %{version} +fi + +# abort if this doesn't get created by syncqt.pl +test -f "./include/QtWebEngineCore/qtwebenginecoreglobal.h" + + +%build +#%if 0%{?rhel} == 7 +#. /opt/rh/devtoolset-7/enable +#%endif + +# python2 path +export PATH=$(pwd)/python2/usr/bin:$PATH +export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/python2/usr/lib64 + +export STRIP=strip +export NINJAFLAGS="%{__ninja_common_opts}" +export NINJA_PATH=%{__ninja} + +%{qmake_qt5} \ + %{?debug_config:CONFIG+="%{debug_config}}" \ + CONFIG+="link_pulseaudio use_gold_linker" \ + %{?use_system_libicu:QMAKE_EXTRA_ARGS+="-system-webengine-icu"} \ + QMAKE_EXTRA_ARGS+="-webengine-kerberos" \ + %{?pipewire:QMAKE_EXTRA_ARGS+="-webengine-webrtc-pipewire"} \ + . + +# avoid %%make_build for now, the -O flag buffers output from intermediate build steps done via ninja +make + +%if 0%{?docs} +%make_build docs +%endif + +%install +make install INSTALL_ROOT=%{buildroot} + +%if 0%{?docs} +make install_docs INSTALL_ROOT=%{buildroot} +%endif + +# rpm macros +install -p -m644 -D %{SOURCE10} \ + %{buildroot}%{rpm_macros_dir}/macros.qt5-qtwebengine +sed -i \ + -e "s|@@NAME@@|%{name}|g" \ + -e "s|@@EPOCH@@|%{?epoch}%{!?epoch:0}|g" \ + -e "s|@@VERSION@@|%{version}|g" \ + -e "s|@@EVR@@|%{?epoch:%{epoch:}}%{version}-%{release}|g" \ + %{buildroot}%{rpm_macros_dir}/macros.qt5-qtwebengine + +## .prl/.la file love +# nuke .prl reference(s) to %%buildroot, excessive (.la-like) libs +pushd %{buildroot}%{_qt5_libdir} +for prl_file in libQt5*.prl ; do + sed -i -e "/^QMAKE_PRL_BUILD_DIR/d" ${prl_file} + if [ -f "$(basename ${prl_file} .prl).so" ]; then + rm -fv "$(basename ${prl_file} .prl).la" + sed -i -e "/^QMAKE_PRL_LIBS/d" ${prl_file} + fi +done +# explicitly omit, at least until there's a real library installed associated with it -- rex +rm -fv Qt5WebEngineCore.la +popd + +mkdir -p %{buildroot}%{_qtwebengine_dictionaries_dir} + +# adjust cmake dep(s) to allow for using the same Qt5 that was used to build it +# using the lesser of %%version, %%_qt5_version +%global lesser_version $(echo -e "%{version}\\n%{_qt5_version}" | sort -V | head -1) +sed -i -e "s|%{version} \${_Qt5WebEngine|%{lesser_version} \${_Qt5WebEngine|" \ + %{buildroot}%{_qt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake + + +%ldconfig_scriptlets + +#%if 0%{?fedora} > 35 || 0%{?epel} > 9 +%filetriggerin -- %{_datadir}/hunspell +#%else +#%filetriggerin -- %{_datadir}/myspell +#%endif +while read filename ; do + case "$filename" in + *.dic) + bdicname=%{_qtwebengine_dictionaries_dir}/`basename -s .dic "$filename"`.bdic + %{_qt5_bindir}/qwebengine_convert_dict "$filename" "$bdicname" &> /dev/null || : + ;; + esac +done + +%files +%license LICENSE.* +%if 0%{?docs} +%license src/webengine/doc/src/qtwebengine-3rdparty.qdoc +%endif +%{_qt5_libdir}/libQt5*.so.* +%{_qt5_bindir}/qwebengine_convert_dict +%{_qt5_libdir}/qt5/qml/* +%{_qt5_libdir}/qt5/libexec/QtWebEngineProcess +%{_qt5_plugindir}/designer/libqwebengineview.so +%{_qt5_plugindir}/imageformats/libqpdf.so +%dir %{_qt5_datadir}/resources/ +%if ! 0%{?use_system_libicu} +%{_qt5_datadir}/resources/icudtl.dat +%endif +%{_qt5_datadir}/resources/qtwebengine_resources_100p.pak +%{_qt5_datadir}/resources/qtwebengine_resources_200p.pak +%{_qt5_datadir}/resources/qtwebengine_resources.pak +%dir %{_qtwebengine_dictionaries_dir} +%dir %{_qt5_translationdir}/qtwebengine_locales +%lang(am) %{_qt5_translationdir}/qtwebengine_locales/am.pak +%lang(ar) %{_qt5_translationdir}/qtwebengine_locales/ar.pak +%lang(bg) %{_qt5_translationdir}/qtwebengine_locales/bg.pak +%lang(bn) %{_qt5_translationdir}/qtwebengine_locales/bn.pak +%lang(ca) %{_qt5_translationdir}/qtwebengine_locales/ca.pak +%lang(cs) %{_qt5_translationdir}/qtwebengine_locales/cs.pak +%lang(da) %{_qt5_translationdir}/qtwebengine_locales/da.pak +%lang(de) %{_qt5_translationdir}/qtwebengine_locales/de.pak +%lang(el) %{_qt5_translationdir}/qtwebengine_locales/el.pak +%lang(en) %{_qt5_translationdir}/qtwebengine_locales/en-GB.pak +%lang(en) %{_qt5_translationdir}/qtwebengine_locales/en-US.pak +%lang(es) %{_qt5_translationdir}/qtwebengine_locales/es-419.pak +%lang(es) %{_qt5_translationdir}/qtwebengine_locales/es.pak +%lang(et) %{_qt5_translationdir}/qtwebengine_locales/et.pak +%lang(fa) %{_qt5_translationdir}/qtwebengine_locales/fa.pak +%lang(fi) %{_qt5_translationdir}/qtwebengine_locales/fi.pak +%lang(fil) %{_qt5_translationdir}/qtwebengine_locales/fil.pak +%lang(fr) %{_qt5_translationdir}/qtwebengine_locales/fr.pak +%lang(gu) %{_qt5_translationdir}/qtwebengine_locales/gu.pak +%lang(he) %{_qt5_translationdir}/qtwebengine_locales/he.pak +%lang(hi) %{_qt5_translationdir}/qtwebengine_locales/hi.pak +%lang(hr) %{_qt5_translationdir}/qtwebengine_locales/hr.pak +%lang(hu) %{_qt5_translationdir}/qtwebengine_locales/hu.pak +%lang(id) %{_qt5_translationdir}/qtwebengine_locales/id.pak +%lang(it) %{_qt5_translationdir}/qtwebengine_locales/it.pak +%lang(ja) %{_qt5_translationdir}/qtwebengine_locales/ja.pak +%lang(kn) %{_qt5_translationdir}/qtwebengine_locales/kn.pak +%lang(ko) %{_qt5_translationdir}/qtwebengine_locales/ko.pak +%lang(lt) %{_qt5_translationdir}/qtwebengine_locales/lt.pak +%lang(lv) %{_qt5_translationdir}/qtwebengine_locales/lv.pak +%lang(ml) %{_qt5_translationdir}/qtwebengine_locales/ml.pak +%lang(mr) %{_qt5_translationdir}/qtwebengine_locales/mr.pak +%lang(ms) %{_qt5_translationdir}/qtwebengine_locales/ms.pak +%lang(nb) %{_qt5_translationdir}/qtwebengine_locales/nb.pak +%lang(nl) %{_qt5_translationdir}/qtwebengine_locales/nl.pak +%lang(pl) %{_qt5_translationdir}/qtwebengine_locales/pl.pak +%lang(pt_BR) %{_qt5_translationdir}/qtwebengine_locales/pt-BR.pak +%lang(pt_PT) %{_qt5_translationdir}/qtwebengine_locales/pt-PT.pak +%lang(ro) %{_qt5_translationdir}/qtwebengine_locales/ro.pak +%lang(ru) %{_qt5_translationdir}/qtwebengine_locales/ru.pak +%lang(sk) %{_qt5_translationdir}/qtwebengine_locales/sk.pak +%lang(sl) %{_qt5_translationdir}/qtwebengine_locales/sl.pak +%lang(sr) %{_qt5_translationdir}/qtwebengine_locales/sr.pak +%lang(sv) %{_qt5_translationdir}/qtwebengine_locales/sv.pak +%lang(sw) %{_qt5_translationdir}/qtwebengine_locales/sw.pak +%lang(ta) %{_qt5_translationdir}/qtwebengine_locales/ta.pak +%lang(te) %{_qt5_translationdir}/qtwebengine_locales/te.pak +%lang(th) %{_qt5_translationdir}/qtwebengine_locales/th.pak +%lang(tr) %{_qt5_translationdir}/qtwebengine_locales/tr.pak +%lang(uk) %{_qt5_translationdir}/qtwebengine_locales/uk.pak +%lang(vi) %{_qt5_translationdir}/qtwebengine_locales/vi.pak +%lang(zh_CN) %{_qt5_translationdir}/qtwebengine_locales/zh-CN.pak +%lang(zh_TW) %{_qt5_translationdir}/qtwebengine_locales/zh-TW.pak + +%files devel +%{rpm_macros_dir}/macros.qt5-qtwebengine +%{_qt5_headerdir}/Qt*/ +%{_qt5_libdir}/libQt5*.so +%{_qt5_libdir}/libQt5*.prl +%{_qt5_libdir}/cmake/Qt5*/ +%{_qt5_libdir}/pkgconfig/Qt5*.pc +%{_qt5_archdatadir}/mkspecs/modules/*.pri + +%files devtools +%{_qt5_datadir}/resources/qtwebengine_devtools_resources.pak + +%files examples +%{_qt5_examplesdir}/ + +%if 0%{?docs} +%files doc +%{_qt5_docdir}/* +%endif + + +%changelog +* Fri Dec 16 2022 peijiankang -5.15.10-1 +- update upstream version to 5.15.10 + +* Fri Jul 24 2020 maminjie -5.11.1-10 +- Fix the build error for U16_NEXT calls + +* Sun Jun 28 2020 huanghaitao -5.11.1-9 +- Fix the build errors with conflicting declaration of C + +* Sat Jun 20 2020 huanghaitao -5.11.1-8 +- Solved the unresolved problem + +* Wed Mar 18 2020 gulining - 5.11.1-7 +- Fix build error + +* Wed Mar 18 2020 yanglijin - 5.11.1-6 +- Remove help package + +* Fri Mar 6 2020 Ling Yang - 5.11.1-5 +- Package Init +