From 048da08e1e2a4e9e47f42d2ab38acd6c5fa09e5b Mon Sep 17 00:00:00 2001 From: "jochen@chromium.org" Date: Tue, 6 May 2014 08:32:40 +0000 Subject: [PATCH] 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 --- fetch.py | 13 ++++++++----- gclient_scm.py | 4 ++++ recipes/v8.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 recipes/v8.py diff --git a/fetch.py b/fetch.py index 5d595f45aa..d3bcacd793 100755 --- a/fetch.py +++ b/fetch.py @@ -111,10 +111,12 @@ class GclientGitCheckout(GclientCheckout, GitCheckout): 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 @@ class GclientGitSvnCheckout(GclientGitCheckout, SvnCheckout): 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 e17702c547..b0ca582817 100644 --- a/gclient_scm.py +++ b/gclient_scm.py @@ -358,6 +358,10 @@ class GitWrapper(SCMWrapper): 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 0000000000..bfa7916fba --- /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))