diff options
Diffstat (limited to 'media/libvpx/update.py')
-rwxr-xr-x | media/libvpx/update.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/media/libvpx/update.py b/media/libvpx/update.py new file mode 100755 index 0000000000..8e0b938781 --- /dev/null +++ b/media/libvpx/update.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import argparse +import os +import re +import shutil +import sys +import subprocess +import tarfile +import urllib.request +from pprint import pprint +from io import StringIO + +def prepare_upstream(prefix, commit=None): + upstream_url = 'https://chromium.googlesource.com/webm/libvpx' + shutil.rmtree(os.path.join(base, 'libvpx/')) + print(upstream_url + '/+archive/' + commit + '.tar.gz') + urllib.request.urlretrieve(upstream_url + '/+archive/' + commit + '.tar.gz', 'libvpx.tar.gz') + tarfile.open('libvpx.tar.gz').extractall(path='libvpx') + os.remove(os.path.join(base, 'libvpx.tar.gz')) + os.chdir(base) + return commit + +def cleanup_upstream(): + os.remove(os.path.join(base, 'libvpx', '.gitattributes')) + os.remove(os.path.join(base, 'libvpx', '.gitignore')) + shutil.rmtree(os.path.join(base, 'libvpx', 'third_party', 'libwebm')) + shutil.rmtree(os.path.join(base, 'libvpx', 'tools')) + +def apply_patches(): + # Patch to fix a crash caused by MSVC 2013 + os.system("patch -p3 < bug1137614.patch") + # Bug 1263384 - Check input frame resolution + os.system("patch -p3 < input_frame_validation.patch") + # Bug 1315288 - Check input frame resolution for vp9 + os.system("patch -p3 < input_frame_validation_vp9.patch") + # Avoid c/asm name collision for loopfilter_sse2 + os.system("patch -p3 < rename_duplicate_files.patch") + os.system("mv libvpx/vpx_dsp/x86/loopfilter_sse2.c libvpx/vpx_dsp/x86/loopfilter_intrin_sse2.c") + # Ensure float_control_word.asm is included + os.system("patch -p3 < win64_build_fix.patch") + +def update_readme(commit): + with open('README_MOZILLA') as f: + readme = f.read() + + if 'The git commit ID used was' in readme: + new_readme = re.sub('The git commit ID used was [v\.a-f0-9]+', + 'The git commit ID used was %s' % commit, readme) + else: + new_readme = "%s\n\nThe git commit ID used was %s\n" % (readme, commit) + + if readme != new_readme: + with open('README_MOZILLA', 'w') as f: + f.write(new_readme) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='''Update libvpx''') + parser.add_argument('--debug', dest='debug', action="store_true") + parser.add_argument('--commit', dest='commit', type=str, default='master') + + args = parser.parse_args() + + commit = args.commit + DEBUG = args.debug + + base = os.path.abspath(os.curdir) + prefix = os.path.join(base, 'libvpx/') + + commit = prepare_upstream(prefix, commit) + + apply_patches() + update_readme(commit) + + cleanup_upstream() |