diff --git a/.gitignore b/.gitignore index 0707cef..fac2569 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /qtwebengine-opensource-src-5.6.0-rc-clean.tar.xz /qtwebengine-opensource-src-5.6.0-clean.tar.xz /qtwebengine-opensource-src-5.6.1-clean.tar.xz +/qtwebengine-opensource-src-5.7.0-clean.tar.xz diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh index c7ad617..eddd58e 100755 --- a/clean_ffmpeg.sh +++ b/clean_ffmpeg.sh @@ -22,12 +22,12 @@ where=`pwd` -generated_files=`./process_ffmpeg_gyp.py $1` +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 +cd $1/third_party/ffmpeg header_files=" libavutil/x86/asm.h \ libavutil/x86/bswap.h \ @@ -45,6 +45,7 @@ header_files=" libavutil/x86/asm.h \ libavutil/arm/intmath.h \ libavutil/arm/intreadwrite.h \ libavutil/arm/timer.h \ + libavutil/atomic.h \ libavutil/atomic_gcc.h \ libavutil/attributes.h \ libavutil/audio_fifo.h \ @@ -66,6 +67,7 @@ header_files=" libavutil/x86/asm.h \ libavutil/macros.h \ libavutil/old_pix_fmts.h \ libavutil/pixfmt.h \ + libavutil/qsort.h \ libavutil/replaygain.h \ libavutil/softfloat_tables.h \ libavutil/thread.h \ @@ -194,6 +196,7 @@ manual_files=" libavutil/x86/x86inc.asm \ libavcodec/hpel_template.c \ libavcodec/hpeldsp_template.c \ libavcodec/mdct_template.c \ + libavcodec/pel_template.c \ libavcodec/videodsp_template.c \ libavcodec/h264pred.c \ libavcodec/hpeldsp.c \ @@ -208,14 +211,18 @@ manual_files=" libavutil/x86/x86inc.asm \ chromium/ffmpeg_stub_headers.fragment \ chromium/ffmpegsumo.sigs" -other_files=" Changelog \ +other_files=" BUILD.gn \ + Changelog \ COPYING.GPLv2 \ COPYING.GPLv3 \ COPYING.LGPLv2.1 \ COPYING.LGPLv3 \ CREDITS \ - ffmpeg_generated.gypi \ + CREDITS.chromium \ ffmpeg.gyp \ + ffmpeg_generated.gypi \ + ffmpeg_generated.gni \ + ffmpeg_options.gni \ ffmpegsumo.ver \ INSTALL \ LICENSE \ diff --git a/clean_qtwebengine.sh b/clean_qtwebengine.sh index 0c97005..33eacab 100755 --- a/clean_qtwebengine.sh +++ b/clean_qtwebengine.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2015 Kevin Kofler +# Copyright 2015-2016 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 @@ -21,7 +21,7 @@ if [ -z "$1" ] ; then echo "usage: ./clean_qtwebengine.sh VERSION" - echo "e.g.: ./clean_qtwebengine.sh 5.6.0" + echo "e.g.: ./clean_qtwebengine.sh 5.7.0" exit 1 fi @@ -55,7 +55,7 @@ else fi echo "running clean_ffmpeg.sh" -./clean_ffmpeg.sh "$DIRNAME/src/3rdparty/chromium/third_party/ffmpeg" || exit $? +./clean_ffmpeg.sh "$DIRNAME/src/3rdparty/chromium" || exit $? echo "repacking as $DIRNAME-clean.tar.xz" XZ_OPT="-9 -f" tar cJf "$DIRNAME-clean.tar.xz" "$DIRNAME" || exit $? diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py new file mode 100755 index 0000000..e659d63 --- /dev/null +++ b/get_free_ffmpeg_source_files.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# 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]) + for condition in conditions: + limitations = ['is_linux', 'ffmpeg_branding == "Chromium"'] + if all(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) + else: + parse_sources (block[1], output_sources, arch_not_arm) + + 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/process_ffmpeg_gyp.py b/process_ffmpeg_gyp.py deleted file mode 100755 index abbeedf..0000000 --- a/process_ffmpeg_gyp.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/python -# Copyright 2013 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 - -if __name__ == "__main__": - path = "%s/ffmpeg_generated.gypi" % sys.argv[1] - with open(path, "r") as input_file: - content = input_file.read().replace('\n', '') - - brandings = ['ChromeOS', 'ChromiumOS', 'win', 'Chrome'] - output_duplicates = [] - sections = re.findall('\[([^\}]*)\]', content) - for section in sections: - condition = re.findall("'([^']*)'", section) - if not any(x in condition[0] for x in brandings): - for source_file in condition[1:]: - output_duplicates.append( - source_file.replace('<(shared_generated_dir)/', '')) - - output = list(set(output_duplicates)) - output.remove('c_sources') - output.remove('asm_sources') - print ' '.join(output) diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec index 0fe761e..5aef620 100644 --- a/qt5-qtwebengine.spec +++ b/qt5-qtwebengine.spec @@ -10,12 +10,12 @@ %global docs 1 %endif -%if 0%{?fedora} > 22 -# need libvpx >= 1.4.0 +%if 0%{?fedora} > 23 +# need libvpx >= 1.5.0 %global use_system_libvpx 1 %endif -%if 0%{?fedora} || 0%{?rhel} > 6 -# need libwebp >= 0.4.3 +%if 0%{?fedora} > 23 +# need libwebp >= 0.5.0 %global use_system_libwebp 1 %endif @@ -29,8 +29,8 @@ Summary: Qt5 - QtWebEngine components Name: qt5-qtwebengine -Version: 5.6.1 -Release: 3%{?dist} +Version: 5.7.0 +Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details # See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html @@ -38,13 +38,13 @@ Release: 3%{?dist} 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 -# wget http://download.qt.io/official_releases/qt/5.6/5.6.1/submodules/qtwebengine-opensource-src-5.6.1.tar.xz -# ./clean_qtwebengine.sh 5.6.1 +# wget http://download.qt.io/official_releases/qt/5.7/5.7.0/submodules/qtwebengine-opensource-src-5.7.0.tar.xz +# ./clean_qtwebengine.sh 5.7.0 Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz # cleanup scripts used above Source1: clean_qtwebengine.sh Source2: clean_ffmpeg.sh -Source3: process_ffmpeg_gyp.py +Source3: get_free_ffmpeg_source_files.py # do not compile with -Wno-format, which also bypasses -Werror-format-security Patch0: qtwebengine-opensource-src-5.6.0-beta-no-format.patch # some tweaks to linux.pri (system libs, link libpci, run unbundling script) @@ -115,7 +115,7 @@ BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libudev) %if 0%{?use_system_libwebp} -BuildRequires: pkgconfig(libwebp) >= 0.4.3 +BuildRequires: pkgconfig(libwebp) >= 0.5.0 %endif BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(jsoncpp) @@ -148,7 +148,7 @@ BuildRequires: pkgconfig(libsrtp) BuildRequires: perl BuildRequires: python %if 0%{?use_system_libvpx} -BuildRequires: pkgconfig(vpx) >= 1.4.0 +BuildRequires: pkgconfig(vpx) >= 1.5.0 %endif # extra (non-upstream) functions needed, see @@ -169,8 +169,8 @@ BuildRequires: pkgconfig(vpx) >= 1.4.0 # Of course, Chromium itself is bundled. It cannot be unbundled because it is # not a library, but forked (modified) application code. # Some security fixes are backported, see: -# http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=45-based -Provides: bundled(chromium) = 45 +# http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=49-based +Provides: bundled(chromium) = 49 # Bundled in src/3rdparty/chromium/third_party: # Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers, @@ -182,28 +182,33 @@ Provides: bundled(angle) = 2422 # 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 47 now defaults to: a "chimera build", i.e., -# use the BoringSSL code and the system NSS certificates. +# 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 process_ffmpeg_gyp.py. +# 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) = 2.7 +Provides: bundled(ffmpeg) = 2.8 Provides: bundled(iccjpeg) # bundled as "khronos", headers only Provides: bundled(khronos_headers) # bundled as "leveldatabase" -Provides: bundled(leveldb) = r80 -Provides: bundled(libjingle) = 9564 +Provides: bundled(leveldb) +Provides: bundled(libjingle) = 11250 %if !0%{?use_system_libvpx} -Provides: bundled(libvpx) = 1.4.0 +# bundled as "libvpx_new" +# the version in README.chromium is wrong, see +# src/3rdparty/chromium/third_party/libvpx_new/source/libvpx/CHANGELOG for the +# real version number +Provides: bundled(libvpx) = 1.5.0 %endif %if !0%{?use_system_libwebp} -Provides: bundled(libwebp) = 0.4.3 +Provides: bundled(libwebp) = 0.5.0 %endif Provides: bundled(libXNVCtrl) = 302.17 -Provides: bundled(libyuv) = 1444 +Provides: bundled(libyuv) = 1563 Provides: bundled(modp_b64) Provides: bundled(mojo) # headers only @@ -211,12 +216,12 @@ Provides: bundled(npapi) Provides: bundled(openmax_dl) = 1.0.2 Provides: bundled(ots) Provides: bundled(qcms) = 4 -Provides: bundled(sfntly) = 0-0.1.svn111 +Provides: bundled(sfntly) Provides: bundled(skia) # bundled as "smhasher" Provides: bundled(SMHasher) = 0-0.1.svn147 Provides: bundled(sqlite) = 3.8.7.4 -Provides: bundled(usrsctp) = 0-0.1.svn9045 +Provides: bundled(usrsctp) Provides: bundled(webrtc) = 90 %ifarch %{ix86} x86_64 # header (for assembly) only @@ -250,7 +255,7 @@ Provides: bundled(nsURLParsers) # Bundled outside of third_party, apparently not considered as such by Chromium: # see src/3rdparty/chromium/v8/include/v8_version.h for the version number -Provides: bundled(v8) = 4.5.103.35 +Provides: bundled(v8) = 4.9.385.33 # bundled by v8 (src/3rdparty/chromium/v8/src/third_party/fdlibm) # see src/3rdparty/chromium/v8/src/third_party/fdlibm/README.v8 for the version Provides: bundled(fdlibm) = 5.3 @@ -442,6 +447,11 @@ popd %changelog +* Sat Jul 16 2016 Kevin Kofler - 5.7.0-1 +- Update to 5.7.0 +- Update version numbers of bundled stuff +- Update system libvpx/libwebp version requirements (now F24+ only) + * Tue Jun 14 2016 Rex Dieter - 5.6.1-3 - rebuild (glibc) diff --git a/sources b/sources index fec4ca5..1386ee0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -0d74f61291d3f79473801a2d73397164 qtwebengine-opensource-src-5.6.1-clean.tar.xz +b346229a20b4e0ab615f179696ae58db qtwebengine-opensource-src-5.7.0-clean.tar.xz