You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
#!/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, _exc_type, _exc_value, _exc_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))
|