diff options
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/build.py | 69 | ||||
| -rwxr-xr-x | tools/run_hooks.py | 16 | ||||
| -rwxr-xr-x | tools/sync_third_party.py (renamed from tools/build_third_party.py) | 0 |
3 files changed, 77 insertions, 8 deletions
diff --git a/tools/build.py b/tools/build.py new file mode 100755 index 000000000..fb061eae3 --- /dev/null +++ b/tools/build.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# Copyright 2018 the Deno authors. All rights reserved. MIT license. +import argparse +import os +import sys +from os.path import join +from util import run +import distutils.spawn + +parser = argparse.ArgumentParser(description='') +parser.add_argument( + '--build_path', default='', help='Directory to build into.') +parser.add_argument( + '--args', default='', help='Specifies build arguments overrides.') +parser.add_argument( + '--mode', default='debug', help='Build configuration: debug, release.') +options, targets = parser.parse_known_args() + +root_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) +third_party_path = join(root_path, "third_party") +depot_tools_path = join(third_party_path, "depot_tools") +gn_path = join(depot_tools_path, "gn") +ninja_path = join(depot_tools_path, "ninja") + +# Add third_party/depot_tools to PATH because some google tools (e.g. +# tool_wrapper, download_from_google_storage) use some google specific python +# wrapper. +os.environ["PATH"] = depot_tools_path + os.pathsep + os.environ["PATH"] + +os.chdir(root_path) + +if options.build_path: + build_path = options.build_path +else: + build_path = join(root_path, "out", options.mode) + +gn_args = [] +if options.args: + gn_args += options.args.split() + +if options.mode == "release": + gn_args += ["is_official_build=true"] +elif options.mode == "debug": + pass +else: + print "Bad mode {}. Use 'release' or 'debug' (default)" % options.mode + sys.exit(1) + +# Check if ccache is in the path, and if so we cc_wrapper. +ccache_path = distutils.spawn.find_executable("ccache") +if ccache_path: + gn_args += [r'cc_wrapper="%s"' % ccache_path] + +# mkdir $build_path. We do this so we can write args.gn before running gn gen. +if not os.path.isdir(build_path): + os.makedirs(build_path) + +# Rather than using gn gen --args we manually write the args.gn override file. +# This is to avoid quoting/escaping complications when passing overrides as +# command-line arguments. +args_filename = join(build_path, "args.gn") +if not os.path.exists(args_filename) or options.args: + with open(args_filename, "w+") as f: + f.write("\n".join(gn_args) + "\n") + +run([gn_path, "gen", build_path]) + +target = " ".join(targets) if targets else ":all" +run([ninja_path, "-C", build_path, target]) diff --git a/tools/run_hooks.py b/tools/run_hooks.py index 2ec671186..58178a69c 100755 --- a/tools/run_hooks.py +++ b/tools/run_hooks.py @@ -9,14 +9,14 @@ depot_tools_path = os.path.join(third_party_path, "depot_tools") os.chdir(root_path) -def download(fn): +def download(filename): run([ + "python", os.path.join(depot_tools_path + '/download_from_google_storage.py'), - '--no_resume', '--platform=' + sys.platform, '--no_auth', '--bucket', - 'chromium-gn', '-s', - os.path.join(root_path, fn) - ], - quiet=True) + '--platform=' + sys.platform, '--no_auth', '--bucket=chromium-gn', + '--sha1_file', + os.path.join(root_path, filename) + ]) if sys.platform == 'win32': @@ -25,5 +25,5 @@ elif sys.platform == 'darwin': download("third_party/v8/buildtools/mac/gn.sha1") elif sys.platform.startswith('linux'): download("third_party/v8/buildtools/linux64/gn.sha1") -run(['python', 'third_party/v8/tools/clang/scripts/update.py', '--if-needed'], - quiet=True) + +run(['python', 'third_party/v8/tools/clang/scripts/update.py', '--if-needed']) diff --git a/tools/build_third_party.py b/tools/sync_third_party.py index f32d669b2..f32d669b2 100755 --- a/tools/build_third_party.py +++ b/tools/sync_third_party.py |
