#!/usr/bin/env python3 # # Copyright 2016 WebAssembly Community Group participants # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from __future__ import print_function import glob import json import os import urllib2 STORAGE_BASE = 'https://storage.googleapis.com/wasm-llvm/builds/git/' def download_revision(force_latest): name = 'latest' if force_latest else 'lkgr' downloaded = urllib2.urlopen(STORAGE_BASE + name).read().strip() # TODO: for now try opening as JSON, if that doesn't work then the content is # just a hash. The waterfall is in the process of migrating to JSON. info = None try: info = json.loads(downloaded) except ValueError: pass return info['build'] if type(info) == dict else downloaded def download_tar(tar_pattern, directory, revision): tar_path = os.path.join(directory, tar_pattern) revision_tar_path = tar_path % revision if os.path.isfile(revision_tar_path): print('Already have `%s`' % revision_tar_path) else: print('Downloading `%s`' % revision_tar_path) with open(revision_tar_path, 'w+') as f: f.write(urllib2.urlopen(STORAGE_BASE + tar_pattern % revision).read()) # Remove any previous tarfiles. for older_tar in glob.glob(tar_path % '*'): if older_tar != revision_tar_path: print('Removing older tar file `%s`' % older_tar) os.remove(older_tar) return revision_tar_path