From 45c0bba8a40bb87a386fad02ca51371a44f475ba Mon Sep 17 00:00:00 2001 From: Andras Becsi Date: Thu, 22 May 2014 20:42:02 +0200 Subject: Update ninja and bump Chromium version to 33.0.1750.170 This patch also changes the way we handle our patches. We'll always take a new snapshot without patching Chromium and rebase our patches on top of the snapshot. This removes the need for separate patch files for the ustream repository since we can use the patches of the snapshot and apply them on the upstream checkout if we want to use an upstream build. This makes it easier for us to have branches for the release and maintain and minimize the number of patches we need on top of upstream Chromium. For now a snapshot checkout is needed to be able to prepare the patches for an upstream build but in future we cold improve this to fetch the patches from the remote snapshot repository if needed. Change-Id: I6280ffbe2d50d25d252734bc76d19bfaaa081637 Reviewed-by: Zeno Albisser --- init-repository.py | 12 +--- src/3rdparty | 2 +- tools/scripts/patch_upstream.py | 126 ++++++++++++++++++++++++++++++++++++++ tools/scripts/version_resolver.py | 2 +- 4 files changed, 131 insertions(+), 11 deletions(-) create mode 100755 tools/scripts/patch_upstream.py diff --git a/init-repository.py b/init-repository.py index 7870515e3..5ab0c9e7a 100755 --- a/init-repository.py +++ b/init-repository.py @@ -130,16 +130,10 @@ def installGitHooks(): os.chdir(qtwebengine_root) subprocess.call(['scp', '-p', '-P', '29418', 'codereview.qt-project.org:hooks/commit-msg', '.git/hooks']) -def applyPatches(): - if use_external_chromium: - return - os.chdir(qtwebengine_root) - subprocess.call(['sh', './patches/patch-chromium.sh']) - def initUpstreamSubmodules(): ninja_url = 'https://github.com/martine/ninja.git' chromium_url = 'https://chromium.googlesource.com/chromium/src.git' - ninja_shasum = '84986af6fdeae3f649f2bf884b20f644bc370e48' + ninja_shasum = '7103c32646df958b0287c65b1c660bf528a191d6' chromium_ref = 'refs/branch-heads/' + resolver.currentBranch() os.chdir(qtwebengine_root) @@ -184,7 +178,7 @@ subprocess.call(['git', 'update-index', '--assume-unchanged', '.gitmodules']) if args.upstream: initUpstreamSubmodules() updateLastChange() - if not args.baseline_upstream: - applyPatches() + if not args.baseline_upstream and not use_external_chromium: + subprocess.call([os.path.join(qtwebengine_root, 'tools', 'scripts', 'patch_upstream.py')]) if args.snapshot: initSnapshot() diff --git a/src/3rdparty b/src/3rdparty index 1b5dc494c..91bc2da61 160000 --- a/src/3rdparty +++ b/src/3rdparty @@ -1 +1 @@ -Subproject commit 1b5dc494c6547be044ab5fed57dc0419bba3f950 +Subproject commit 91bc2da61f6ea5617bf0161f65a9b36de93783f8 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' -- cgit v1.2.3