#!/usr/bin/env python import argparse import errno import os import subprocess import sys SOURCE_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) VENDOR_DIR = os.path.join(SOURCE_ROOT, 'vendor') DOWNLOAD_DIR = os.path.join(VENDOR_DIR, 'download') def main(): args = parse_args() if (args.libcc_source_path != None and args.libcc_shared_library_path != None and args.libcc_static_library_path != None): if (not os.path.isdir(args.libcc_source_path)): print "Error: Directory does not exist:", args.libcc_source_path sys.exit(0) elif (not os.path.isdir(args.libcc_shared_library_path)): print "Error: Directory does not exist:", args.libcc_shared_library_path sys.exit(0) elif (not os.path.isdir(args.libcc_static_library_path)): print "Error: Directory does not exist:", args.libcc_static_library_path sys.exit(0) elif (args.libcc_source_path != None or args.libcc_shared_library_path != None or args.libcc_static_library_path != None): print "Error: All options of libchromiumcontent are required OR let " \ "brightray choose it" sys.exit(0) update_submodules() setup_libchromiumcontent(args.dev, args.commit, args.target_arch, args.url, args.libcc_source_path, args.libcc_shared_library_path, args.libcc_static_library_path) def parse_args(): parser = argparse.ArgumentParser(description='Bootstrap this project') parser.add_argument('-c', '--commit', required=True, help='The commit of libchromiumcontent to download.') parser.add_argument('-d', '--dev', action='store_true', help='Do not download static_library build') parser.add_argument('--target_arch', required=True, help='The arch of libchromiumcontent to download.') parser.add_argument('url', help='The base URL from which to download ' 'libchromiumcontent (i.e., the URL you passed to ' 'libchromiumcontent\'s script/upload script') parser.add_argument('--libcc_source_path', required=False, help='The source path of libchromiumcontent. ' \ 'NOTE: All options of libchromiumcontent are ' 'required OR let brightray choose it') parser.add_argument('--libcc_shared_library_path', required=False, help='The shared library path of libchromiumcontent. ' \ 'NOTE: All options of libchromiumcontent are ' \ 'required OR let brightray choose it') parser.add_argument('--libcc_static_library_path', required=False, help='The static library path of libchromiumcontent. ' \ 'NOTE: All options of libchromiumcontent are ' \ 'required OR let brightray choose it') return parser.parse_args() def update_submodules(): return (subprocess.call(['git', 'submodule', 'sync', '--quiet']) or subprocess.call(['git', 'submodule', 'update', '--init', '--recursive'])) def setup_libchromiumcontent(is_dev, commit, target_arch, url, libcc_source_path, libcc_shared_library_path, libcc_static_library_path): target_dir = os.path.join(DOWNLOAD_DIR, 'libchromiumcontent') download = os.path.join(VENDOR_DIR, 'libchromiumcontent', 'script', 'download') args = ['-f', '-c', commit, '--target_arch', target_arch, url, target_dir] if (libcc_source_path != None and libcc_shared_library_path != None and libcc_static_library_path != None): args += ['--libcc_source_path', libcc_source_path, '--libcc_shared_library_path', libcc_shared_library_path, '--libcc_static_library_path', libcc_static_library_path] mkdir_p(target_dir) else: mkdir_p(DOWNLOAD_DIR) if is_dev: subprocess.check_call([sys.executable, download] + args) else: subprocess.check_call([sys.executable, download, '-s'] + args) def mkdir_p(path): try: os.makedirs(path) except OSError as e: if e.errno != errno.EEXIST: raise if __name__ == '__main__': sys.exit(main())