Chromium Code Reviews| Index: build/android/download_doclava.py |
| diff --git a/build/android/download_doclava.py b/build/android/download_doclava.py |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..749ed5377120c6c6a07506942cebedeba1b14fe9 |
| --- /dev/null |
| +++ b/build/android/download_doclava.py |
| @@ -0,0 +1,78 @@ |
| +#!/usr/bin/env python |
| +# Copyright 2016 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. |
| + |
| +"""Minimal tool to download doclava from Google storage when building for |
| +Android.""" |
| + |
| +import os |
| +import shutil |
| +import subprocess |
| +import sys |
| + |
| + |
| +# Its existence signifies an Android checkout. |
| +ANDROID_ONLY_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), |
| + os.pardir, os.pardir, |
| + 'third_party', 'android_tools') |
| + |
| + |
| +def ReadFile(filename): |
| + with file(filename, 'r') as f: |
| + return f.read().strip() |
| + |
| + |
| +def WriteFile(filename, content): |
| + assert not os.path.exists(filename) |
| + with file(filename, 'w') as f: |
| + f.write(content) |
| + f.write('\n') |
| + |
| + |
| +def main(): |
| + # Some Windows bots inadvertently have third_party/android_tools installed, |
| + # but are unable to run download_from_google_storage because depot_tools |
| + # is not in their path, so avoid failure and bail. |
| + if sys.platform == 'win32': |
| + return 0 |
| + if not os.path.exists(ANDROID_ONLY_DIR): |
| + return 0 |
| + |
| + outdir = os.path.join('src', 'buildtools', 'android', 'doclava') |
| + tarball = outdir + '.tar.gz' |
| + sha1file = tarball + '.sha1' |
| + stampfile = tarball + '.stamp' |
| + |
| + checksum = ReadFile(sha1file) |
| + |
| + if os.path.exists(stampfile): |
| + if (os.path.exists(tarball) and |
| + os.path.exists(outdir) and |
| + checksum == ReadFile(stampfile)): |
| + return 0 |
| + else: |
| + os.unlink(stampfile) |
| + |
| + subprocess.check_call([ |
| + 'download_from_google_storage', |
| + '--no_resume', |
| + '--no_auth', |
| + '--bucket', 'chromium-doclava', |
| + '-s', sha1file]) |
|
agrieve
2016/04/11 17:12:56
You should add a comment saying why --extract does
|
| + assert os.path.exists(tarball) |
| + |
| + if os.path.exists(outdir): |
| + shutil.rmtree(outdir) |
| + assert not os.path.exists(outdir) |
| + os.makedirs(outdir) |
| + assert os.path.exists(outdir) |
| + |
| + print "Extracting", tarball |
| + subprocess.check_call(['tar', 'axf', os.path.abspath(tarball)], cwd=outdir) |
|
agrieve
2016/04/11 17:12:57
Probably better to use Python's tarfile module for
|
| + |
| + WriteFile(stampfile, checksum) |
| + return 0 |
| + |
| +if __name__ == '__main__': |
| + sys.exit(main()) |