diff options
author | borenet <borenet@chromium.org> | 2016-05-13 08:41:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-13 08:41:04 -0700 |
commit | 4ca5539df5c02fabac9ec1a8d0a0f58a9966347e (patch) | |
tree | 4adfffdf387fbb0ccb7ec06989c479f86603c89e /infra | |
parent | aabe15e206bf7625fecccd9feaebcb06f55f13c5 (diff) |
Add isolate_android_sdk.py script and android_sdk_hash
BUG=skia:5298
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1975893002
Review-Url: https://codereview.chromium.org/1975893002
Diffstat (limited to 'infra')
-rw-r--r-- | infra/bots/android_sdk.isolate | 7 | ||||
-rw-r--r-- | infra/bots/android_sdk_hash | 1 | ||||
-rw-r--r-- | infra/bots/isolate_android_sdk.py | 76 |
3 files changed, 84 insertions, 0 deletions
diff --git a/infra/bots/android_sdk.isolate b/infra/bots/android_sdk.isolate new file mode 100644 index 0000000000..bd3346405d --- /dev/null +++ b/infra/bots/android_sdk.isolate @@ -0,0 +1,7 @@ +{ + 'variables': { + 'files': [ + '<(ANDROID_SDK_DIR)/', + ], + }, +} diff --git a/infra/bots/android_sdk_hash b/infra/bots/android_sdk_hash new file mode 100644 index 0000000000..67f0df8e42 --- /dev/null +++ b/infra/bots/android_sdk_hash @@ -0,0 +1 @@ +a27a70d73b85191b9e671ff2a44547c3f7cc15ee diff --git a/infra/bots/isolate_android_sdk.py b/infra/bots/isolate_android_sdk.py new file mode 100644 index 0000000000..456670b69c --- /dev/null +++ b/infra/bots/isolate_android_sdk.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# +# Copyright 2016 Google Inc. +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + + +"""Isolate a locally-managed Android SDK.""" + + +import argparse +import os +import shlex +import shutil +import subprocess +import sys +import utils + + +ISOLATE_FILE_NAME = 'android_sdk.isolate' +REPO_SKIA = 'https://skia.googlesource.com/skia.git' +SDK_DIR_NAME = 'android-sdk' + + +def isolate_android_sdk(android_sdk_root): + """Isolate the Android SDK and return the isolated hash.""" + repo_isolate_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), + ISOLATE_FILE_NAME) + with utils.tmp_dir(): + # Copy the SDK dir contents into a directory with a known name. + sdk_dir = os.path.join(os.getcwd(), SDK_DIR_NAME) + shutil.copytree(android_sdk_root, sdk_dir) + isolate_file = os.path.join(os.getcwd(), ISOLATE_FILE_NAME) + shutil.copyfile(repo_isolate_file, isolate_file) + + # Isolate the SDK. + isolate = 'isolate' # TODO(borenet): Don't assume this is in PATH. + android_sdk_relpath = os.path.relpath( + sdk_dir, os.path.dirname(isolate_file)) + isolate_cmd = [isolate, 'archive', '--quiet', + '--isolate-server', 'https://isolateserver.appspot.com', + '-i', isolate_file, + '-s', 'android_sdk.isolated', + '--extra-variable', 'ANDROID_SDK_DIR=%s' % android_sdk_relpath] + isolate_out = subprocess.check_output(isolate_cmd).rstrip() + return shlex.split(isolate_out)[0] + + + +def update_sdk_file(skia_path, isolated_hash): + """Edit the android_sdk_hash file, upload a CL.""" + with utils.chdir(skia_path): + with utils.git_branch(): + hash_file = os.path.join('infra', 'bots', 'android_sdk_hash') + with open(hash_file, 'w') as f: + f.write(isolated_hash) + subprocess.check_call([utils.GIT, 'add', hash_file]) + subprocess.check_call([utils.GIT, 'commit', '-m', 'Update Android SDK']) + subprocess.check_call([utils.GIT, 'cl', 'upload', '--bypass-hooks']) + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('--android_sdk_root', required=True) + args = parser.parse_args() + skia_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + os.pardir, os.pardir) + + with utils.print_timings(): + isolated_hash = isolate_android_sdk(args.android_sdk_root) + update_sdk_file(skia_path, isolated_hash) + + +if __name__ == '__main__': + main() |