58 lines
1.7 KiB
Python
Executable file
58 lines
1.7 KiB
Python
Executable file
#!/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/gmscore-size/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 'Downloading %s to %s' % (src, dest)
|
|
shutil.copyfile(src, dest)
|
|
unpack_archive(dest)
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(Main())
|