Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(327)

Unified Diff: tools/dartium/fetch_dartium.py

Issue 400183002: Convenience script for fetching dartium (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comments Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dartium/fetch_dartium.py
diff --git a/tools/dartium/fetch_dartium.py b/tools/dartium/fetch_dartium.py
new file mode 100755
index 0000000000000000000000000000000000000000..4f6ed3280b9a21ba011801f178f2fc6ccd1445f4
--- /dev/null
+++ b/tools/dartium/fetch_dartium.py
@@ -0,0 +1,142 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+# A script to fetch and build dartium branches into an empty directory.
+#
+# Main dev directories - src, src/third_party/WebKit, src/dart - are checked out
+# via git. A custom_deps entry is added to the .gclient file.
+#
+# Note: this checkout is not suitable for git merges across branches
+# (e.g., upstream merges). It's a shallow checkout without history.
+#
+# Usage:
+# .../fetch_dartium.py --branch=[trunk|bleeding_edge|dartium_integration|1.4|...]
+# --path=path [--build]
+#
+# Default branch is bleeding_edge. The path must be created by this script.
+
+import optparse
+import os
+import os.path
+import re
+import shutil
+import subprocess
+import sys
+
+def Run(cmd, path = '.', isPiped = False):
+ print 'Running in ' + path + ': ' + ' '.join(cmd)
+ cwd = os.getcwd()
+ os.chdir(path)
+ if isPiped:
+ p = subprocess.Popen(cmd, stdout = subprocess.PIPE)
+ else:
+ p = subprocess.Popen(cmd)
+ os.chdir(cwd)
+ return p
+
+def RunSync(cmd):
+ print "\n[%s]\n$ %s" % (os.getcwd(), " ".join(cmd))
+ pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ output = pipe.communicate()
+ if pipe.returncode == 0:
+ return output[0]
+ else:
+ print output[1]
+ print "FAILED. RET_CODE=%d" % pipe.returncode
+ sys.exit(pipe.returncode)
+
+
+def main():
+ option_parser = optparse.OptionParser()
+ option_parser.add_option('', '--branch', help="Checkout a branch of Dartium, e.g., [bleeding_edge|dartium_integration|trunk|1.4]",
+ action="store", dest="branch", default="bleeding_edge")
+ option_parser.add_option('', '--build', help="Compile",
+ action="store_true", dest="build")
+ option_parser.add_option('', '--path', help="Path to checkout to",
+ action="store", dest="path", default=None)
+ options, args = option_parser.parse_args()
+
+ path = options.path
+ if not path:
+ print 'Please set a path'
+ exit(1)
+ path = os.path.expanduser(path)
+ if os.path.isfile(path) or os.path.isdir(path):
+ print 'Path %s already exists' % path
+ os.mkdir(path)
+ os.chdir(path)
+
+ if options.branch != 'trunk':
+ branch = 'branches/' + options.branch
+ else:
+ branch = 'trunk'
+ deps_path = 'https://dart.googlecode.com/svn/%s/deps/dartium.deps' % branch
+
+ Run(['gclient', 'config', deps_path]).wait()
+
+ # Mark chrome, blink, and dart as custom. We'll check them out separately
+ # via git.
+ f = open('.gclient', 'r')
+ lines = f.readlines()
+ f.close()
+ f = open('.gclient', 'w')
+ for line in lines:
+ f.write(line)
+ if 'custom_deps' in line:
+ f.write(
+ ' "src": None,\n'
+ ' "src/third_party/WebKit": None,\n'
+ ' "src/dart": None,\n'
+ )
+ f.close()
+
+ # Find branches from the DEPS file.
+ DEPS = RunSync(['svn', 'cat', deps_path + '/DEPS'])
+ chrome_base = 'svn://svn.chromium.org/'
+ chrome_branch = re.search('dartium_chromium_branch":\s*"(.+)"', DEPS).group(1)
+ blink_branch = re.search('dartium_webkit_branch":\s*"(.+)"', DEPS).group(1)
+ dart_base = 'https://dart.googlecode.com/svn/'
+ dart_branch = re.search('dart_branch":\s*"(.+)"', DEPS).group(1)
+
+ chrome_url = chrome_base + chrome_branch
+ blink_url = chrome_base + blink_branch
+ dart_url = dart_base + dart_branch + '/dart'
+
+ # Fetch dart, chrome, and blink via git-svn and everything else via
+ # gclient sync.
+ blink_fetch = Run(['git', 'svn', 'clone', '-rHEAD', blink_url, 'blink'])
+ dart_fetch = Run(['git', 'svn', 'clone', '-rHEAD', dart_url, 'dart'])
+ Run(['git', 'svn', 'clone', '-rHEAD', chrome_url, 'src']).wait()
+ sync = Run(['gclient', 'sync', '--nohooks'])
+ ps = [blink_fetch, dart_fetch, sync]
+
+ # Spin until everything is done.
+ while True:
+ ps_status = [p.poll() for p in ps]
+ if all([x is not None for x in ps_status]):
+ break
+
+ # Move blink and dart to the right locations.
+ webkit_relative_path = os.path.join('src', 'third_party', 'WebKit')
+ if os.path.isdir(webkit_relative_path):
+ shutil.rmtree(webkit_relative_path)
+ Run(['mv', 'blink', webkit_relative_path]).wait()
+ dart_relative_path = os.path.join('src', 'dart')
+ if os.path.isdir(dart_relative_path):
+ shutil.rmtree(dart_relative_path)
+ Run(['mv', 'dart', dart_relative_path]).wait()
+ os.chdir('src')
+
+ # Sync again and runhooks.
+ Run(['gclient', 'sync']).wait()
+ Run(['gclient', 'runhooks']).wait()
+
+ # Build if requested.
+ if options.build:
+ Run([os.path.join('.', 'dart', 'tools', 'dartium', 'build.py'), '--mode=Release'])
+
+if '__main__' == __name__:
+ main()
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698