blob: 01ba4e15aa19ebc9eac77c0b7c3bddd493a3ca53 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
# Script for downloading from x20 a dependency in the same way we use cloud
# storage.
import optparse
import os
import shutil
import subprocess
import sys
import tarfile
import utils
GMSCORE_DEPS = '/google/data/ro/teams/r8/deps'
def parse_options():
return optparse.OptionParser().parse_args()
def extract_dir(filename):
return filename[0:len(filename) - len('.tar.gz')]
def unpack_archive(filename):
dest_dir = extract_dir(filename)
if os.path.exists(dest_dir):
print 'Deleting existing dir %s' % dest_dir
shutil.rmtree(dest_dir)
dirname = os.path.dirname(os.path.abspath(filename))
with tarfile.open(filename, 'r:gz') as tar:
tar.extractall(path=dirname)
def Main():
(options, args) = parse_options()
assert len(args) == 1
sha1_file = args[0]
dest = sha1_file[:-5]
print 'Ensuring %s' % dest
with open(sha1_file, 'r') as input_sha:
sha1 = input_sha.readline()
if os.path.exists(dest) and utils.get_sha1(dest) == sha1:
print 'sha1 matches, not downloading'
dest_dir = extract_dir(dest)
if os.path.exists(dest_dir):
print 'destination directory exists, no extraction'
else:
unpack_archive(dest)
return
src = os.path.join(GMSCORE_DEPS, sha1)
if not os.path.exists(src):
print 'File (%s) does not exist on x20' % src
print 'Maybe pass -Pno_internal to your gradle invocation'
return 42
print 'Downloading %s to %s' % (src, dest)
shutil.copyfile(src, dest)
unpack_archive(dest)
if __name__ == '__main__':
sys.exit(Main())