script/checkout.py (49 lines of code) (raw):

#! /usr/bin/env python3 import common, os, re, subprocess, sys def main(): root_dir = os.path.join(os.path.dirname(__file__), os.pardir) os.chdir(root_dir) parser = common.create_parser(True) args = parser.parse_args() # Clone depot_tools if not os.path.exists('depot_tools'): subprocess.check_call(['git', 'clone', '--config', 'core.autocrlf=input', 'https://chromium.googlesource.com/chromium/tools/depot_tools.git', 'depot_tools']) # Clone ANGLE match = re.match('[0-9a-f]+', args.version) if not match: raise Exception('Expected --version "<sha>", got "' + args.version + '"') commit = match.group(0) if os.path.exists('angle'): print('> Fetching') os.chdir('angle') subprocess.check_call(['git', 'reset', '--hard']) subprocess.check_call(['git', 'clean', '-d', '-f']) subprocess.check_call(['git', 'fetch', 'origin']) subprocess.check_call(['git', 'reset', '--hard'], cwd='build') else: print('> Cloning') subprocess.check_call(['git', 'clone', '--config', 'core.autocrlf=input', 'https://chromium.googlesource.com/angle/angle.git', 'angle']) os.chdir('angle') subprocess.check_call(['git', 'fetch', 'origin']) # Checkout commit print('> Checking out', commit) subprocess.check_call(['git', '-c', 'advice.detachedHead=false', 'checkout', commit]) # git deps print('> Running gclient sync') gclient_config = '''solutions = [ {{ "name": ".", "url": "https://chromium.googlesource.com/angle/angle.git@{}", "deps_file": "DEPS", "managed": False, "custom_vars": {{}}, }}, ]''' with open('.gclient', 'w') as gclient_file: print(gclient_config.format(commit), file=gclient_file) tools_dir = os.path.join(root_dir, 'depot_tools') gclient = 'gclient.bat' if 'windows' == common.host() else 'gclient' env = os.environ.copy() env['DEPOT_TOOLS_WIN_TOOLCHAIN']='0' subprocess.check_call([os.path.join(tools_dir, gclient), 'sync'], env=env) # Apply patches print('> Applying patches') subprocess.check_call(['git', 'apply', os.path.join(root_dir, '0001-Disable-compute-build-timestamp.patch')]) subprocess.check_call(['git', 'apply', os.path.join(root_dir, '0002-Fix-Windows-UI-Composition-SwapChain.patch')]) return 0 if __name__ == '__main__': sys.exit(main())