Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Unified Diff: infra/bots/isolate_android_sdk.py

Issue 1975893002: Add isolate_android_sdk.py script and android_sdk_hash (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Use provided SDK Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « infra/bots/android_sdk_hash ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: infra/bots/isolate_android_sdk.py
diff --git a/infra/bots/isolate_android_sdk.py b/infra/bots/isolate_android_sdk.py
new file mode 100644
index 0000000000000000000000000000000000000000..456670b69c9a0cacb181e5f67d069072e95cc3de
--- /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',
kjlubick 2016/05/13 15:10:21 This command assumes you have authenticated with t
borenet 2016/05/13 15:15:17 Yes, and it assumes that you have the Go binary in
+ '--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()
« no previous file with comments | « infra/bots/android_sdk_hash ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698