Add recipe for v8
BUG=none
R=dpranke@chromium.org,machenbach@chromium.org
Review URL: https://codereview.chromium.org/225743005
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@268466 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/fetch.py b/fetch.py
index 5d595f4..d3bcacd 100755
--- a/fetch.py
+++ b/fetch.py
@@ -111,10 +111,12 @@
def init(self):
# Configure and do the gclient checkout.
self.run_gclient('config', '--spec', self.spec['gclient_spec'])
+ sync_cmd = ['sync']
if self.options.nohooks:
- self.run_gclient('sync', '--nohooks')
- else:
- self.run_gclient('sync')
+ sync_cmd.append('--nohooks')
+ if self.spec.get('with_branch_heads', False):
+ sync_cmd.append('--with_branch_heads')
+ self.run_gclient(*sync_cmd)
# Configure git.
wd = os.path.join(self.base, self.root)
@@ -159,10 +161,11 @@
wd = os.path.join(self.base, real_path)
if self.options.dry_run:
print 'cd %s' % wd
- self.run_git('svn', 'init', '--prefix=origin/', '-T',
+ prefix = svn_spec.get('svn_prefix', 'origin/')
+ self.run_git('svn', 'init', '--prefix=' + prefix, '-T',
svn_spec['svn_branch'], svn_spec['svn_url'], cwd=wd)
self.run_git('config', '--replace', 'svn-remote.svn.fetch',
- svn_spec['svn_branch'] + ':refs/remotes/origin/' +
+ svn_spec['svn_branch'] + ':refs/remotes/' + prefix +
svn_spec['svn_ref'], cwd=wd)
self.run_git('svn', 'fetch', cwd=wd)
diff --git a/gclient_scm.py b/gclient_scm.py
index e17702c..b0ca582 100644
--- a/gclient_scm.py
+++ b/gclient_scm.py
@@ -358,6 +358,10 @@
self._DeleteOrMove(options.force)
self._Clone(revision, url, options)
self._UpdateBranchHeads(options, fetch=True)
+ if deps_revision and deps_revision.startswith('branch-heads/'):
+ deps_branch = deps_revision.replace('branch-heads/', '')
+ self._Capture(['branch', deps_branch, deps_revision])
+ self._Capture(['checkout', '--quiet', deps_branch])
if file_list is not None:
files = self._Capture(['ls-files']).splitlines()
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
diff --git a/recipes/v8.py b/recipes/v8.py
new file mode 100644
index 0000000..bfa7916
--- /dev/null
+++ b/recipes/v8.py
@@ -0,0 +1,53 @@
+# Copyright 2014 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.
+
+import sys
+
+import recipe_util # pylint: disable=F0401
+
+
+# This class doesn't need an __init__ method, so we disable the warning
+# pylint: disable=W0232
+class V8(recipe_util.Recipe):
+ """Basic Recipe class for V8."""
+
+ @staticmethod
+ def fetch_spec(props):
+ ref = 'branch-heads/bleeding_edge'
+ url = 'https://chromium.googlesource.com/external/v8.git@%s' % ref
+ solution = { 'name' :'v8',
+ 'url' : url,
+ 'deps_file': '.DEPS.git',
+ 'managed' : False,
+ 'custom_deps': {},
+ 'safesync_url': '',
+ }
+ spec = {
+ 'solutions': [solution],
+ 'svn_url': 'https://v8.googlecode.com/svn',
+ 'svn_branch': 'branches/bleeding_edge',
+ 'svn_ref': 'bleeding_edge',
+ 'svn_prefix': 'branch-heads/',
+ 'with_branch_heads': True,
+ }
+ checkout_type = 'gclient_git_svn'
+ if props.get('nosvn'):
+ checkout_type = 'gclient_git'
+ spec_type = '%s_spec' % checkout_type
+ return {
+ 'type': checkout_type,
+ spec_type: spec,
+ }
+
+ @staticmethod
+ def expected_root(_props):
+ return 'v8'
+
+
+def main(argv=None):
+ return V8().handle_args(argv)
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))