Index: recipe_modules/bot_update/resources/bot_update.py |
diff --git a/recipe_modules/bot_update/resources/bot_update.py b/recipe_modules/bot_update/resources/bot_update.py |
index 3a5838cc6166b7d643b57b64ac787a3dc6195a02..bae22ae84fc74dbc6846798279e91f403920a784 100755 |
--- a/recipe_modules/bot_update/resources/bot_update.py |
+++ b/recipe_modules/bot_update/resources/bot_update.py |
@@ -82,6 +82,7 @@ cache_dir = r%(cache_dir)s |
ATTEMPTS = 5 |
GIT_CACHE_PATH = path.join(DEPOT_TOOLS_DIR, 'git_cache.py') |
+GCLIENT_PATH = path.join(DEPOT_TOOLS_DIR, 'gclient.py') |
# If there is less than 100GB of disk space on the system, then we do |
# a shallow checkout. |
@@ -319,6 +320,18 @@ def ensure_no_checkout(dir_names): |
print 'done' |
+def call_gclient(*args, **kwargs): |
+ """Run the "gclient.py" tool with the supplied arguments. |
+ |
+ Args: |
+ args: command-line arguments to pass to gclient. |
+ kwargs: keyword arguments to pass to call. |
+ """ |
+ cmd = [sys.executable, '-u', GCLIENT_PATH] |
+ cmd.extend(args) |
+ return call(*cmd, **kwargs) |
+ |
+ |
def gclient_configure(solutions, target_os, target_os_only, git_cache_dir): |
"""Should do the same thing as gclient --spec='...'.""" |
with codecs.open('.gclient', mode='w', encoding='utf-8') as f: |
@@ -330,19 +343,19 @@ def gclient_sync(with_branch_heads, shallow, break_repo_locks): |
# We just need to allocate a filename. |
fd, gclient_output_file = tempfile.mkstemp(suffix='.json') |
os.close(fd) |
- gclient_bin = 'gclient.bat' if sys.platform.startswith('win') else 'gclient' |
- cmd = [gclient_bin, 'sync', '--verbose', '--reset', '--force', |
+ |
+ args = ['sync', '--verbose', '--reset', '--force', |
'--ignore_locks', '--output-json', gclient_output_file, |
'--nohooks', '--noprehooks', '--delete_unversioned_trees'] |
if with_branch_heads: |
- cmd += ['--with_branch_heads'] |
+ args += ['--with_branch_heads'] |
if shallow: |
- cmd += ['--shallow'] |
+ args += ['--shallow'] |
if break_repo_locks: |
- cmd += ['--break_repo_locks'] |
+ args += ['--break_repo_locks'] |
try: |
- call(*cmd, tries=1) |
+ call_gclient(*args, tries=1) |
except SubprocessFailed as e: |
# Throw a GclientSyncFailed exception so we can catch this independently. |
raise GclientSyncFailed(e.message, e.code, e.output) |
@@ -354,8 +367,7 @@ def gclient_sync(with_branch_heads, shallow, break_repo_locks): |
def gclient_revinfo(): |
- gclient_bin = 'gclient.bat' if sys.platform.startswith('win') else 'gclient' |
- return call(gclient_bin, 'revinfo', '-a') or '' |
+ return call_gclient('revinfo', '-a') or '' |
def create_manifest(): |