Files
react-native-devtools-frontend/scripts/deps/download_emscripten.py
T
Liviu Rau 3f146240d2 Run deps scripts with vpython3
+ drive-by imports cleanup

DISABLE_THIRD_PARTY_CHECK=Migrating multiple scripts to py3
Bug: 1292013
Change-Id: I6d004c6fd54253cc3694cf02cfe94731c7d2146d
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3484199
Reviewed-by: Alexander Schulze <alexschulze@chromium.org>
Reviewed-by: Tim Van der Lippe <tvanderlippe@chromium.org>
Commit-Queue: Liviu Rau <liviurau@chromium.org>
2022-02-25 10:14:22 +00:00

80 lines
2.1 KiB
Python

#!/usr/bin/env python3
#
# Copyright 2020 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.
"""
Used to download a pre-built version of emscripten for running e2e tests
testing DevTools with emscripten generated Wasm binaries.
"""
import argparse
import os
import platform
import sys
import tarfile
import urllib.request
import zipfile
BS = 8192
STAMP_FILE = 'build-revision'
DOWNLOAD_URL = "https://storage.googleapis.com/webassembly/emscripten-releases-builds/%s/%s/wasm-binaries.%s"
def check_stamp_file(options):
file_name = os.path.join(options.dest, STAMP_FILE)
if not os.path.isfile(file_name):
return False
with open(file_name) as f:
return options.tag == f.read().strip()
def write_stamp_file(options):
with open(os.path.join(options.dest, STAMP_FILE), 'w') as f:
return f.write(options.tag)
def unzip(os_name, file, dest):
is_zip = os_name == 'win'
z = zipfile.ZipFile(file) if is_zip else tarfile.open(file, 'r:bz2')
z.extractall(path=dest)
def script_main(args):
parser = argparse.ArgumentParser(description='Download Emscripten')
parser.add_argument('tag', help='emscripten tag')
parser.add_argument('dest', help='destination directory')
options = parser.parse_args(args)
if not os.path.isdir(options.dest):
os.makedirs(options.dest)
if check_stamp_file(options):
return 0
os_name = {
'Linux': 'linux',
'Windows': 'win',
'Darwin': 'mac'
}[platform.system()]
url = DOWNLOAD_URL % (os_name, options.tag,
'zip' if os_name == 'win' else 'tbz2')
try:
filename, _ = urllib.request.urlretrieve(url)
unzip(os_name, filename, options.dest)
write_stamp_file(options)
except Exception as e:
sys.stderr.write('Error Downloading URL "{url}": {e}\n'.format(url=url,
e=e))
return 1
finally:
urllib.request.urlcleanup()
if __name__ == '__main__':
sys.exit(script_main(sys.argv[1:]))