Add a git command for running ToT WebKit patches against the trybots.
This is basically a wrapper script for running a WebKit change against the try bots. It can be run from within third_party/WebKit and will try to apply the patch against ToT WebKit. This tells the try server we want to use ToT WebKit by passing third_party/WebKit@HEAD as the first line of the patch file. BUG=None Review URL: https://codereview.chromium.org/12226013 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@181972 0039d316-1c4b-4281-b951-d872f2087c98experimental/szager/collated-output
parent
6683ab4c49
commit
0e30595a9f
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
# Test if this script is running under a MSys install. If it is, we will
|
||||
# hardcode the path to Python where possible.
|
||||
OUTPUT="$(uname | grep 'MINGW')"
|
||||
MINGW=$?
|
||||
|
||||
if [ $MINGW = 0 ]; then
|
||||
base_dir="${0%\\*}"
|
||||
else
|
||||
base_dir=$(dirname "$0")
|
||||
fi
|
||||
|
||||
if [ -d "$base_dir/python_bin" -a $MINGW = 0 ]; then
|
||||
PYTHONDONTWRITEBYTECODE=1 exec "$base_dir/python_bin/python.exe" "$base_dir"/git_wktry.py "$@"
|
||||
else
|
||||
PYTHONDONTWRITEBYTECODE=1 exec "$base_dir/git_wktry.py" "$@"
|
||||
fi
|
@ -0,0 +1,86 @@
|
||||
#!/usr/bin/python
|
||||
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
"""Wrapper for trychange.py for WebKit changes."""
|
||||
|
||||
import errno
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
import git_cl
|
||||
from scm import GIT
|
||||
import trychange
|
||||
|
||||
|
||||
class ScopedTemporaryFile(object):
|
||||
def __init__(self, **kwargs):
|
||||
file_handle, self._path = tempfile.mkstemp(**kwargs)
|
||||
os.close(file_handle)
|
||||
|
||||
def __enter__(self):
|
||||
return self._path
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
try:
|
||||
os.remove(self._path)
|
||||
except OSError, e:
|
||||
if e.errno != errno.ENOENT:
|
||||
raise e
|
||||
|
||||
|
||||
def generateDiff(path_to_write, chromium_src_root):
|
||||
"""Create the diff file to send to the try server. We prepend the WebKit
|
||||
revision to the beginning of the diff so we can patch against ToT or other
|
||||
versions of WebKit."""
|
||||
diff_lines = ['third_party/WebKit@HEAD\n']
|
||||
|
||||
raw_diff = GIT.GenerateDiff(os.path.join(chromium_src_root,
|
||||
'third_party/WebKit'), full_move=True).splitlines(True)
|
||||
diff_lines.extend(trychange.GetMungedDiff('third_party/WebKit',
|
||||
raw_diff)[0])
|
||||
|
||||
open(path_to_write, 'wb').write(''.join(diff_lines))
|
||||
|
||||
|
||||
def addLayoutBotsIfNeeded(argv):
|
||||
for flag in argv:
|
||||
if flag == '--bot' or flag.startswith('--bot=') or flag.startswith('-b'):
|
||||
return argv
|
||||
argv.extend(('--bot', 'linux_layout_rel,mac_layout_rel,win_layout_rel'))
|
||||
|
||||
|
||||
def chromiumSrcRoot():
|
||||
root = GIT.GetCheckoutRoot('.')
|
||||
parent_path, leaf_path = os.path.split(root)
|
||||
if leaf_path == 'WebKit':
|
||||
root = GIT.GetCheckoutRoot(parent_path)
|
||||
return root
|
||||
|
||||
|
||||
def main(argv):
|
||||
chromium_src_root = chromiumSrcRoot()
|
||||
os.chdir(chromium_src_root)
|
||||
argv = argv[1:]
|
||||
addLayoutBotsIfNeeded(argv)
|
||||
|
||||
with ScopedTemporaryFile() as diff_file:
|
||||
generateDiff(diff_file, chromium_src_root)
|
||||
args = [
|
||||
'--sub_rep', 'third_party/WebKit',
|
||||
'--root', 'src',
|
||||
'--rietveld_url', 'https://codereview.chromium.org',
|
||||
'--diff', diff_file,
|
||||
]
|
||||
args.extend(argv)
|
||||
cl = git_cl.Changelist()
|
||||
change = cl.GetChange(cl.GetUpstreamBranch(), None)
|
||||
logging.getLogger().handlers = []
|
||||
return trychange.TryChange(args, change,
|
||||
swallow_exception=False, prog='git wktry')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
Loading…
Reference in New Issue