diff options
author | kjellander@webrtc.org <kjellander@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-08-20 12:10:11 +0000 |
---|---|---|
committer | kjellander@webrtc.org <kjellander@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-08-20 12:10:11 +0000 |
commit | 8925662318ca10d841e92f4dc20bbf0c53aea865 (patch) | |
tree | cf22a005d5117de8425436ea2beaa30c9ed0b63a /sync_chromium.py | |
parent | 3fb2d0cd0e1da897f57a9f9187a8c688519f382a (diff) | |
download | webrtc-8925662318ca10d841e92f4dc20bbf0c53aea865.tar.gz |
Make WebRTC work with Chromium Git checkouts
WebRTC standalone shares a lot of dependencies and build
tools with Chromium. To make the build work, many of the
paths of a Chromium checkout is now emulated by creating
symlinks to files and directories.
All DEPS entries that previously used Var("chromium_trunk")
to reference a Chromium checkout or From("chromium_deps"..)
to reference the Chromium DEPS file are now removed and
replaced by symlink entries in setup_links.py.
The script also handles cleanup of the legacy
Subversion-based dependencies that's needed for the
transition.
Windows: One Windows-specific important change is that
gclient sync|runhooks must now be run from a shell
with Administrator privileges in order to be able to create
symlinks. This also means that Windows XP is no longer
supported.
To transition a previously created checkout:
Run "python setup_links.py --force" to cleanup the old
SVN-based dependencies that have been synced by gclient sync.
For Buildbots, the --force flag is automatically enabled for
their syncs.
BUG=2863, chromium:339647
TEST=Manual testing on Linux, Mac and Windows.
R=andrew@webrtc.org, iannucci@chromium.org, phoglund@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18379005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6938 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'sync_chromium.py')
-rwxr-xr-x | sync_chromium.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sync_chromium.py b/sync_chromium.py new file mode 100755 index 0000000000..ab40c378e8 --- /dev/null +++ b/sync_chromium.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python +# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. +# +# Use of this source code is governed by a BSD-style license +# that can be found in the LICENSE file in the root of the source +# tree. An additional intellectual property rights grant can be found +# in the file PATENTS. All contributing project authors may +# be found in the AUTHORS file in the root of the source tree. + +import argparse +import os +import subprocess +import sys + + +ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) + + +def get_target_os_list(): + try: + main_gclient = os.path.join(os.path.dirname(ROOT_DIR), '.gclient') + config_dict = {} + with open(main_gclient, 'rb') as deps_content: + exec(deps_content, config_dict) + return ','.join(config_dict.get('target_os', [])) + except Exception as e: + print >> sys.stderr, "error while parsing .gclient:", e + + +def main(): + CR_DIR = os.path.join(ROOT_DIR, 'chromium') + + p = argparse.ArgumentParser() + p.add_argument('--target-revision', required=True, + help='The target chromium git revision [REQUIRED]') + p.add_argument('--chromium-dir', default=CR_DIR, + help=('The path to the chromium directory to sync ' + '(default: %(default)r)')) + opts = p.parse_args() + opts.chromium_dir = os.path.abspath(opts.chromium_dir) + + # Do a quick check to see if we were successful last time to make runhooks + # sooper fast. + flag_file = os.path.join(opts.chromium_dir, '.last_sync_chromium') + if os.path.exists(flag_file): + with open(flag_file, 'r') as f: + if f.read() == opts.target_revision: + print "Chromium already up to date:", opts.target_revision + return 0 + os.unlink(flag_file) + + env = os.environ.copy() + env['GYP_CHROMIUM_NO_ACTION'] = '1' + gclient_cmd = 'gclient.bat' if sys.platform.startswith('win') else 'gclient' + args = [ + gclient_cmd, 'sync', '--no-history', '--force', '--revision', + 'src@'+opts.target_revision] + target_os_list = get_target_os_list() + if target_os_list: + args += ['--deps=' + target_os_list] + + print 'Running "%s" in %s' % (' '.join(args), opts.chromium_dir) + ret = subprocess.call(args, cwd=opts.chromium_dir, env=env) + if ret == 0: + with open(flag_file, 'wb') as f: + f.write(opts.target_revision) + + return ret + + +if __name__ == '__main__': + sys.exit(main()) |