diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/scripts/patch_upstream.py | 126 | ||||
-rw-r--r-- | tools/scripts/version_resolver.py | 2 |
2 files changed, 127 insertions, 1 deletions
diff --git a/tools/scripts/patch_upstream.py b/tools/scripts/patch_upstream.py new file mode 100755 index 000000000..e3af0ce5f --- /dev/null +++ b/tools/scripts/patch_upstream.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python + +############################################################################# +# +# Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +# Contact: http://www.qt-project.org/legal +# +# This file is part of the QtWebEngine module of the Qt Toolkit. +# +# $QT_BEGIN_LICENSE:LGPL$ +# Commercial License Usage +# Licensees holding valid commercial Qt licenses may use this file in +# accordance with the commercial license agreement provided with the +# Software or, alternatively, in accordance with the terms contained in +# a written agreement between you and Digia. For licensing terms and +# conditions see http://qt.digia.com/licensing. For further information +# use the contact form at http://qt.digia.com/contact-us. +# +# GNU Lesser General Public License Usage +# Alternatively, this file may be used under the terms of the GNU Lesser +# General Public License version 2.1 as published by the Free Software +# Foundation and appearing in the file LICENSE.LGPL included in the +# packaging of this file. Please review the following information to +# ensure the GNU Lesser General Public License version 2.1 requirements +# will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +# +# In addition, as a special exception, Digia gives you certain additional +# rights. These rights are described in the Digia Qt LGPL Exception +# version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +# +# GNU General Public License Usage +# Alternatively, this file may be used under the terms of the GNU +# General Public License version 3.0 as published by the Free Software +# Foundation and appearing in the file LICENSE.GPL included in the +# packaging of this file. Please review the following information to +# ensure the GNU General Public License version 3.0 requirements will be +# met: http://www.gnu.org/copyleft/gpl.html. +# +# +# $QT_END_LICENSE$ +# +############################################################################# + +import glob +import os +import re +import shutil +import subprocess +import sys + +qtwebengine_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) +snapshot_src_dir = os.path.abspath(os.path.join(qtwebengine_root, 'src/3rdparty')) +upstream_src_dir = os.path.abspath(snapshot_src_dir + '_upstream') + +sys.path.append(os.path.join(qtwebengine_root, 'tools', 'scripts')) +import version_resolver as resolver + +def preparePatchesFromSnapshot(): + oldCwd = os.getcwd() + base_sha1 = findSnapshotBaselineSha1() + if not base_sha1: + sys.exit('-- base sha1 not found in ' + os.getcwd() + ' --') + + patches_dir = os.path.join(upstream_src_dir, 'patches') + if os.path.isdir(patches_dir): + shutil.rmtree(patches_dir) + os.mkdir(patches_dir) + + os.chdir(snapshot_src_dir) + subprocess.call(['git', 'format-patch', '-o', patches_dir, base_sha1]) + + os.chdir(patches_dir) + patches = glob.glob('00*.patch') + + # We'll collect the patches for submodules in corresponding lists + patches_dict = {} + for patch in patches: + patch_path = os.path.abspath(patch) + with open(patch, 'r') as pfile: + for line in pfile: + if 'Subject:' in line: + match = re.search('<(.+)>', line) + if match: + submodule = match.group(1) + if submodule not in patches_dict: + patches_dict[submodule] = [] + patches_dict[submodule].append(patch_path) + + os.chdir(oldCwd) + return patches_dict + +def findSnapshotBaselineSha1(): + if not os.path.isdir(snapshot_src_dir): + return '' + oldCwd = os.getcwd() + os.chdir(snapshot_src_dir) + line = subprocess.check_output(['git', 'log', '-n1', '--pretty=oneline', '--grep=' + resolver.currentVersion()]) + os.chdir(oldCwd) + return line.split(' ')[0] + +os.chdir(os.path.join(upstream_src_dir, 'chromium')) + +if not len(findSnapshotBaselineSha1()): + sys.exit('\n-- missing chromium snapshot patches, try running init-repository.py w/o options first --') + +patches = preparePatchesFromSnapshot() +for path in patches: + leading = path.count('/') + 2 + + if path.startswith('chromium'): + os.chdir(os.path.join(upstream_src_dir, path)) + else: + os.chdir(os.path.join(upstream_src_dir, 'chromium', path)) + leading += 1 + + print('\n-- entering '+ os.getcwd() + ' --') + + # Sort the patches to be able to apply them in order + patch_list = sorted(patches[path]) + for patch in patch_list: + error = subprocess.call(['git', 'am', '-p' + str(leading), patch]) + if error != 0: + sys.exit('-- git am ' + patch + ' failed in ' + os.getcwd() + ' --') + +print('\n-- done --') + diff --git a/tools/scripts/version_resolver.py b/tools/scripts/version_resolver.py index 5c625472e..738798e49 100644 --- a/tools/scripts/version_resolver.py +++ b/tools/scripts/version_resolver.py @@ -48,7 +48,7 @@ import json import urllib2 import git_submodule as GitSubmodule -chromium_version = '33.0.1750.149' +chromium_version = '33.0.1750.170' chromium_branch = '1750' json_url = 'http://omahaproxy.appspot.com/all.json' |