blob: de3bc4a179a94b10e1cd999c8c5c25b961275172 [file] [log] [blame]
#!/usr/bin/env python
#
# Copyright 2012 Google Inc. All Rights Reserved.
import os
import re
import shutil
import subprocess
import sys
import update_patched_files
import urllib
def GetLkgr():
f = urllib.urlopen('http://chromium-status.appspot.com/lkgr')
try:
return int(f.read())
finally:
f.close()
def ReadDepsVars(path):
exec_globals = {
'Var': lambda name: exec_globals['vars'][name],
}
execfile(path, exec_globals)
return exec_globals['vars']
def GetRevision(path, name):
return int(ReadDepsVars(path)[name])
def main(argv):
CHROMIUM_DEPS_FILE = 'DEPS'
DARTIUM_DEPS_FILE = '../dartium.deps/DEPS'
CHROMIUM_DEPS_COPY = '../dartium.deps/DEPS.chromium'
REV_PATTERN = '"chromium_revision": "(\d+)",'
deps = file(DARTIUM_DEPS_FILE).read()
current_chrome_rev = int(re.search(REV_PATTERN, deps).group(1))
if len(argv) < 2:
next_chrome_rev = GetLkgr()
else:
next_chrome_rev = int(argv[1])
print 'Chromium roll: %d -> %d' % (current_chrome_rev, next_chrome_rev)
if current_chrome_rev == next_chrome_rev:
return
# Update patched files.
os.chdir('..')
update_patched_files.update_overridden_files(current_chrome_rev, next_chrome_rev)
os.chdir('src')
# Update DEPS.
subprocess.check_call(['svn', 'up', '-r', str(current_chrome_rev), CHROMIUM_DEPS_FILE])
current_webkit_rev = GetRevision(CHROMIUM_DEPS_FILE, 'webkit_revision')
subprocess.check_call(['svn', 'up', '-r', str(next_chrome_rev), CHROMIUM_DEPS_FILE])
next_webkit_rev = GetRevision(CHROMIUM_DEPS_FILE, 'webkit_revision')
shutil.copyfile(CHROMIUM_DEPS_FILE, CHROMIUM_DEPS_COPY)
deps = deps.replace('"chromium_revision": "%d",' % current_chrome_rev, '"chromium_revision": "%d",' % next_chrome_rev)
file(DARTIUM_DEPS_FILE, 'w').write(deps)
# Do webkit roll.
WEBKIT_DIR = 'third_party/WebKit'
subprocess.check_call(['git', 'svn', 'rebase'], cwd=WEBKIT_DIR)
print 'WebKit roll: %d -> %d' % (current_webkit_rev, next_webkit_rev)
if current_webkit_rev < next_webkit_rev:
subprocess.check_call(['bash',
'../../dartium_tools/roll_webkit.sh',
str(current_webkit_rev), str(next_webkit_rev)], cwd=WEBKIT_DIR)
# Update the checkout.
subprocess.check_call(['gclient', 'sync', '-j17'])
if __name__ == '__main__':
sys.exit(main(sys.argv))