Merge pull request #1844 from eseidelGoogle/android_tools
Use mojo's scripts for downloading android tools on the bots
This commit is contained in:
commit
19e51b965a
2
infra/.gitignore
vendored
2
infra/.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
.recipe_deps
|
.recipe_deps
|
||||||
dart-sdk
|
dart-sdk
|
||||||
|
android_tools
|
||||||
|
*.pyc
|
||||||
|
1
infra/VERSION_LINUX_NDK
Normal file
1
infra/VERSION_LINUX_NDK
Normal file
@ -0,0 +1 @@
|
|||||||
|
7b727f0d4c853c9848847839a317300cb83f4ece
|
1
infra/VERSION_LINUX_SDK
Normal file
1
infra/VERSION_LINUX_SDK
Normal file
@ -0,0 +1 @@
|
|||||||
|
0d320c50b0ed188c7e1182388e2beb623a1d307d
|
1
infra/VERSION_MACOSX_NDK
Normal file
1
infra/VERSION_MACOSX_NDK
Normal file
@ -0,0 +1 @@
|
|||||||
|
e21479f1ae8d2fac385c3965672c912d08dff280
|
1
infra/VERSION_MACOSX_SDK
Normal file
1
infra/VERSION_MACOSX_SDK
Normal file
@ -0,0 +1 @@
|
|||||||
|
fa5ea0ca1e0c7c2e40914f3202c7545de4dbca9c
|
97
infra/download_android_tools.py
Executable file
97
infra/download_android_tools.py
Executable file
@ -0,0 +1,97 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
# Copyright 2015 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.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Downloads trimmed-down Android Tools from Google Cloud Storage and extracts
|
||||||
|
them to INSTALL_DIR, updating INSTALL_DIR/VERSION_* stamp files with current
|
||||||
|
version. Does nothing if INSTALL_DIR/VERSION_* are already up to date.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tarfile
|
||||||
|
|
||||||
|
# Path constants. (All of these should be absolute paths.)
|
||||||
|
THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
INSTALL_DIR = os.path.join(THIS_DIR, 'android_tools')
|
||||||
|
|
||||||
|
import find_depot_tools
|
||||||
|
|
||||||
|
DEPOT_PATH = find_depot_tools.add_depot_tools_to_path()
|
||||||
|
GSUTIL_PATH = os.path.join(DEPOT_PATH, 'gsutil.py')
|
||||||
|
|
||||||
|
def RunCommand(command):
|
||||||
|
"""Run command and return success (True) or failure."""
|
||||||
|
|
||||||
|
print 'Running %s' % (str(command))
|
||||||
|
if subprocess.call(command, shell=False) == 0:
|
||||||
|
return True
|
||||||
|
print 'Failed.'
|
||||||
|
return False
|
||||||
|
|
||||||
|
def GetInstalledVersion(version_stamp):
|
||||||
|
version_file = os.path.join(INSTALL_DIR, version_stamp)
|
||||||
|
if not os.path.exists(version_file):
|
||||||
|
return None
|
||||||
|
with open(version_file) as f:
|
||||||
|
return f.read().strip()
|
||||||
|
|
||||||
|
def VersionStampName(tools_name):
|
||||||
|
if sys.platform.startswith('linux'):
|
||||||
|
return 'VERSION_LINUX_' + tools_name.upper()
|
||||||
|
elif sys.platform == 'darwin':
|
||||||
|
return 'VERSION_MACOSX_' + tools_name.upper()
|
||||||
|
else:
|
||||||
|
raise Exception('Unsupported platform: ' + sys.platform)
|
||||||
|
|
||||||
|
def UpdateTools(tools_name):
|
||||||
|
"""Downloads zipped tools from Google Cloud Storage and extracts them,
|
||||||
|
stamping current version."""
|
||||||
|
|
||||||
|
# Read latest version.
|
||||||
|
version_stamp = VersionStampName(tools_name)
|
||||||
|
version = ''
|
||||||
|
with open(os.path.join(THIS_DIR, version_stamp)) as f:
|
||||||
|
version = f.read().strip()
|
||||||
|
# Return if installed binaries are up to date.
|
||||||
|
if version == GetInstalledVersion(version_stamp):
|
||||||
|
return
|
||||||
|
|
||||||
|
# Remove the old install directory checked out from git.
|
||||||
|
if os.path.exists(os.path.join(INSTALL_DIR, '.git')):
|
||||||
|
shutil.rmtree(INSTALL_DIR)
|
||||||
|
# Make sure that the install directory exists.
|
||||||
|
if not os.path.exists(INSTALL_DIR):
|
||||||
|
os.mkdir(INSTALL_DIR)
|
||||||
|
# Remove current installation.
|
||||||
|
tools_root = os.path.join(INSTALL_DIR, tools_name)
|
||||||
|
if os.path.exists(tools_root):
|
||||||
|
shutil.rmtree(tools_root)
|
||||||
|
|
||||||
|
# Download tools from GCS.
|
||||||
|
archive_path = os.path.join(INSTALL_DIR, tools_name + '.tar.gz')
|
||||||
|
download_cmd = ['python', GSUTIL_PATH, 'cp',
|
||||||
|
'gs://mojo/android/tool/%s.tar.gz' % version,
|
||||||
|
archive_path]
|
||||||
|
if not RunCommand(download_cmd):
|
||||||
|
print ('WARNING: Failed to download Android tools.')
|
||||||
|
return
|
||||||
|
|
||||||
|
print "Extracting Android tools (" + tools_name + ")"
|
||||||
|
with tarfile.open(archive_path) as arch:
|
||||||
|
arch.extractall(INSTALL_DIR)
|
||||||
|
os.remove(archive_path)
|
||||||
|
# Write version as the last step.
|
||||||
|
with open(os.path.join(INSTALL_DIR, version_stamp), 'w+') as f:
|
||||||
|
f.write('%s\n' % version)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
UpdateTools('sdk')
|
||||||
|
UpdateTools('ndk')
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main())
|
45
infra/find_depot_tools.py
Normal file
45
infra/find_depot_tools.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# Copyright (c) 2011 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.
|
||||||
|
"""Small utility function to find depot_tools and add it to the python path.
|
||||||
|
|
||||||
|
Will throw an ImportError exception if depot_tools can't be found since it
|
||||||
|
imports breakpad.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def IsRealDepotTools(path):
|
||||||
|
return os.path.isfile(os.path.join(path, 'gclient.py'))
|
||||||
|
|
||||||
|
|
||||||
|
def add_depot_tools_to_path():
|
||||||
|
"""Search for depot_tools and add it to sys.path."""
|
||||||
|
# First look if depot_tools is already in PYTHONPATH.
|
||||||
|
for i in sys.path:
|
||||||
|
if i.rstrip(os.sep).endswith('depot_tools') and IsRealDepotTools(i):
|
||||||
|
return i
|
||||||
|
# Then look if depot_tools is in PATH, common case.
|
||||||
|
for i in os.environ['PATH'].split(os.pathsep):
|
||||||
|
if IsRealDepotTools(i):
|
||||||
|
sys.path.append(i.rstrip(os.sep))
|
||||||
|
return i
|
||||||
|
# Rare case, it's not even in PATH, look upward up to root.
|
||||||
|
root_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
previous_dir = os.path.abspath(__file__)
|
||||||
|
while root_dir and root_dir != previous_dir:
|
||||||
|
i = os.path.join(root_dir, 'depot_tools')
|
||||||
|
if IsRealDepotTools(i):
|
||||||
|
sys.path.append(i)
|
||||||
|
return i
|
||||||
|
previous_dir = root_dir
|
||||||
|
root_dir = os.path.dirname(root_dir)
|
||||||
|
print >> sys.stderr, 'Failed to find depot_tools'
|
||||||
|
return None
|
||||||
|
|
||||||
|
add_depot_tools_to_path()
|
||||||
|
|
||||||
|
# pylint: disable=W0611
|
||||||
|
import breakpad
|
Loading…
x
Reference in New Issue
Block a user