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

Unified Diff: build/download_sdk_extras.py

Issue 799673003: Always download google_play_services zip package instead of rsync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't manually check returncode. Created 5 years, 11 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 | « DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/download_sdk_extras.py
diff --git a/build/download_sdk_extras.py b/build/download_sdk_extras.py
index 1149d9d29641a7814b6271bb53c76acdabc69db5..ca307751f62afd788640719ec8961c1c0e000c72 100755
--- a/build/download_sdk_extras.py
+++ b/build/download_sdk_extras.py
@@ -5,15 +5,16 @@
"""Script to download sdk/extras packages on the bots from google storage.
-The script expects an argument that specifies the packet name in the following
-format: <dir_in_sdk_extras>_<package_name>_<version>. There will be a
-correpsonding bucket in google storage with that name, and it will be downloaded
-to android_tools/sdk/extras/.
+The script expects arguments that specify zips file in the google storage
+bucket named: <dir in SDK extras>_<package name>_<version>.zip. The file will
+be extracted in the android_tools/sdk/extras directory.
"""
import os
+import shutil
import subprocess
import sys
+import zipfile
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'android'))
from pylib import constants
@@ -24,41 +25,31 @@ SDK_EXTRAS_BUCKET = 'gs://chrome-sdk-extras'
SDK_EXTRAS_PATH = os.path.join(constants.ANDROID_SDK_ROOT, 'extras')
-def GetCmdOutputAndStatus(cmd_lst):
- process = subprocess.Popen(cmd_lst, stdout=subprocess.PIPE)
- stdout, _ = process.communicate()
- return stdout, process.returncode
+def clean_and_extract(zip_file):
+ # Extract the directory name and package name from zip file name. The format
+ # of the zip file is <dir in sdk/extras>_<package_name>_<version>.zip.
+ dir_name = zip_file[:zip_file.index('_')]
+ package_name = zip_file[zip_file.index('_')+1:zip_file.rindex('_')]
+ local_dir = '%s/%s/%s' % (SDK_EXTRAS_PATH, dir_name, package_name)
+ if os.path.exists(local_dir):
+ shutil.rmtree(local_dir)
+ local_zip = '%s/%s' % (SDK_EXTRAS_PATH, zip_file)
+ with zipfile.ZipFile(local_zip) as z:
+ z.extractall(path=SDK_EXTRAS_PATH)
-def is_android_buildbot_checkout():
- if not os.path.exists(GSUTIL_PATH) or not os.path.exists(SDK_EXTRAS_PATH):
- return False
- stdout, rc = GetCmdOutputAndStatus([GSUTIL_PATH, 'ls', SDK_EXTRAS_BUCKET])
- # If successfully read bucket, then this must be a bot with permissions
- return not rc
def main(args):
- if is_android_buildbot_checkout():
- success = True
- for arg in args[1:]:
- # Package is named <folder>_<package_name>_<version>
- first_underscore = arg.find('_')
- last_underscore = arg.rfind('_')
- folder = arg[0:first_underscore]
- package = arg[first_underscore+1:last_underscore]
- # Package bucket is <SDK_EXTRAS_BUCKET>/<folder>_<package_name>_<version>
- # and in that bucket will be the directory <folder>/<package_name> to cp.
- package_bucket = '%s/%s/%s/%s' % (SDK_EXTRAS_BUCKET, arg, folder, package)
- package_dir = '%s/%s/%s' % (SDK_EXTRAS_PATH, folder, package)
- if not os.path.exists(package_dir):
- os.makedirs(package_dir)
- # rsync is only supported by gsutil version 4.x
- cmd_lst = [GSUTIL_PATH, '--force-version', '4.6', '-m', 'rsync', '-r',
- '-d', package_bucket, package_dir]
- stdout, rc = GetCmdOutputAndStatus(cmd_lst)
- success = (rc == 0) and success
- if not success:
- return 1
- return 0
+ if not os.path.exists(GSUTIL_PATH) or not os.path.exists(SDK_EXTRAS_PATH):
+ # This is not a buildbot checkout.
kjellander_chromium 2015/01/28 11:05:09 This is a really bad assumption to make. There are
+ return 0
+ for arg in args[1:]:
+ local_zip = '%s/%s' % (SDK_EXTRAS_PATH, arg)
+ if not os.path.exists(local_zip):
+ package_zip = '%s/%s' % (SDK_EXTRAS_BUCKET, arg)
+ subprocess.check_call([GSUTIL_PATH, '--force-version', '4.7', 'cp',
+ package_zip, local_zip])
+ # Always clean dir and extract zip to ensure correct contents.
+ clean_and_extract(arg)
if __name__ == '__main__':
« no previous file with comments | « DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698