2013-06-20 15:23:22 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2018-10-05 22:21:46 +00:00
|
|
|
import argparse
|
2014-05-18 15:03:46 +00:00
|
|
|
import errno
|
2013-06-20 15:23:22 +00:00
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
2018-08-21 19:40:06 +00:00
|
|
|
from lib.config import PLATFORM, get_target_arch
|
|
|
|
from lib.util import add_exec_bit, download, extract_zip, rm_rf, \
|
|
|
|
safe_mkdir, tempdir
|
2013-06-20 15:23:22 +00:00
|
|
|
|
2013-07-01 14:27:14 +00:00
|
|
|
SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
2014-04-29 02:03:03 +00:00
|
|
|
|
2018-10-05 22:21:46 +00:00
|
|
|
def parse_args():
|
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
description='Download binaries for Electron build')
|
|
|
|
|
|
|
|
parser.add_argument('-u', '--root-url', required=True,
|
|
|
|
help="Root URL for all downloads.")
|
|
|
|
parser.add_argument('-v', '--version', required=True,
|
|
|
|
help="Version string, e.g. 'v1.0.0'.")
|
|
|
|
|
|
|
|
return parser.parse_args()
|
2013-06-20 15:23:22 +00:00
|
|
|
|
|
|
|
def main():
|
2018-10-05 22:21:46 +00:00
|
|
|
args = parse_args()
|
|
|
|
url_prefix = "{root_url}/{version}".format(**vars(args))
|
|
|
|
|
2013-06-20 15:23:22 +00:00
|
|
|
os.chdir(SOURCE_ROOT)
|
2014-05-18 15:42:47 +00:00
|
|
|
version_file = os.path.join(SOURCE_ROOT, 'external_binaries', '.version')
|
|
|
|
|
2018-10-05 22:21:46 +00:00
|
|
|
if (is_updated(version_file, args.version)):
|
2014-05-18 15:42:47 +00:00
|
|
|
return
|
|
|
|
|
2014-07-31 06:12:01 +00:00
|
|
|
rm_rf('external_binaries')
|
|
|
|
safe_mkdir('external_binaries')
|
|
|
|
|
2014-05-18 15:03:46 +00:00
|
|
|
if sys.platform == 'darwin':
|
2018-10-05 22:21:46 +00:00
|
|
|
download_and_unzip(url_prefix, 'Mantle')
|
|
|
|
download_and_unzip(url_prefix, 'ReactiveCocoa')
|
|
|
|
download_and_unzip(url_prefix, 'Squirrel')
|
2014-05-18 15:03:46 +00:00
|
|
|
elif sys.platform in ['cygwin', 'win32']:
|
2018-10-05 22:21:46 +00:00
|
|
|
download_and_unzip(url_prefix, 'directxsdk-' + get_target_arch())
|
2013-06-20 15:23:22 +00:00
|
|
|
|
2018-08-21 19:40:06 +00:00
|
|
|
# get sccache & set exec bit. https://bugs.python.org/issue15795
|
2018-10-05 22:21:46 +00:00
|
|
|
download_and_unzip(url_prefix, 'sccache-{0}-x64'.format(PLATFORM))
|
2018-08-21 19:40:06 +00:00
|
|
|
appname = 'sccache'
|
|
|
|
if sys.platform == 'win32':
|
|
|
|
appname += '.exe'
|
|
|
|
add_exec_bit(os.path.join('external_binaries', appname))
|
|
|
|
|
2014-08-06 15:16:42 +00:00
|
|
|
with open(version_file, 'w') as f:
|
2018-10-05 22:21:46 +00:00
|
|
|
f.write(args.version)
|
2014-08-06 15:16:42 +00:00
|
|
|
|
2013-06-20 15:23:22 +00:00
|
|
|
|
2014-05-18 15:42:47 +00:00
|
|
|
def is_updated(version_file, version):
|
|
|
|
existing_version = ''
|
|
|
|
try:
|
|
|
|
with open(version_file, 'r') as f:
|
|
|
|
existing_version = f.readline().strip()
|
|
|
|
except IOError as e:
|
|
|
|
if e.errno != errno.ENOENT:
|
|
|
|
raise
|
|
|
|
return existing_version == version
|
|
|
|
|
|
|
|
|
2018-10-05 22:21:46 +00:00
|
|
|
def download_and_unzip(url_prefix, framework):
|
|
|
|
zip_path = download_framework(url_prefix, framework)
|
2013-06-20 15:23:22 +00:00
|
|
|
if zip_path:
|
2014-05-18 15:35:07 +00:00
|
|
|
extract_zip(zip_path, 'external_binaries')
|
2013-06-20 15:23:22 +00:00
|
|
|
|
|
|
|
|
2018-10-05 22:21:46 +00:00
|
|
|
def download_framework(url_prefix, framework):
|
2014-05-18 15:03:46 +00:00
|
|
|
filename = framework + '.zip'
|
2018-10-05 22:21:46 +00:00
|
|
|
url = url_prefix + '/' + filename
|
2015-04-12 14:10:46 +00:00
|
|
|
download_dir = tempdir(prefix='electron-')
|
2013-06-20 15:23:22 +00:00
|
|
|
path = os.path.join(download_dir, filename)
|
|
|
|
|
|
|
|
download('Download ' + framework, url, path)
|
|
|
|
return path
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
sys.exit(main())
|