summaryrefslogtreecommitdiff
path: root/tools/setup.py
diff options
context:
space:
mode:
authorRy Dahl <ry@tinyclouds.org>2020-01-05 09:19:29 -0500
committerGitHub <noreply@github.com>2020-01-05 09:19:29 -0500
commit5f1df038fb1462607af3555fa7431c05ca484dce (patch)
tree0e819c1e1ec422b9573abc379c79fcbcc1cbd88c /tools/setup.py
parentc41280a057c9ca300afe43f2cb4f576e050f8cde (diff)
Replace libdeno with rusty_v8 (#3556)
Diffstat (limited to 'tools/setup.py')
-rwxr-xr-xtools/setup.py184
1 files changed, 0 insertions, 184 deletions
diff --git a/tools/setup.py b/tools/setup.py
deleted file mode 100755
index 7f17a6606..000000000
--- a/tools/setup.py
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env python
-# Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import os
-import re
-import sys
-from distutils.spawn import find_executable
-import argparse
-import third_party
-from util import build_mode, build_path, enable_ansi_colors, libdeno_path
-from util import shell_quote, root_path, run, third_party_path
-
-parser = argparse.ArgumentParser()
-parser.add_argument(
- "--no-binary-download",
- help="Do not download binaries, must use depot_tools manually",
- action="store_true")
-
-
-def main():
- enable_ansi_colors()
- os.chdir(root_path)
-
- args = parser.parse_args()
-
- if args.no_binary_download:
- print "no binary download"
- else:
- print "binary download"
- third_party.download_gn()
- third_party.download_clang_format()
- third_party.download_clang()
- third_party.maybe_download_sysroot()
-
- write_lastchange()
-
- mode = build_mode(default=None)
- if mode is not None:
- gn_gen(mode)
- else:
- gn_gen("release")
- gn_gen("debug")
-
-
-def write_if_not_exists(filename, contents):
- if not os.path.exists(filename):
- with open(filename, "w+") as f:
- f.write(contents)
-
-
-def write_lastchange():
- lastchange_file = os.path.join(libdeno_path, "build", "util", "LASTCHANGE")
- committime_file = lastchange_file + ".committime"
- write_if_not_exists(
- lastchange_file,
- "LASTCHANGE=c42e4ddbb7973bfb0c57a49ab6bf6dc432baad7e-\n")
- write_if_not_exists(committime_file, "1535518087")
- # TODO Properly we should call the following script, but it seems to cause
- # a rebuild on every commit.
- # run([
- # sys.executable, "build/util/lastchange.py", "-o", lastchange_file,
- # "--source-dir", root_path, "--filter="
- # ])
-
-
-# If this text is found in args.gn, we assume it hasn't been hand edited.
-gn_args_header = [
- "# This file is automatically generated by tools/setup.py.",
- "# REMOVE THIS LINE to preserve any changes you make.", ""
-]
-
-
-def gn_string(s):
- # In gn, strings are enclosed in double-quotes and use backslash as the
- # escape character. The only escape sequences supported are:
- # \" (for literal quote)
- # \$ (for literal dollars sign)
- # \\ (for literal backslash)
- # Any other use of a backslash is treated as a literal backslash.
- s = re.sub(r'("|\$|\\(?=["$\\]))', r'\\\1', s)
- s = '"' + s + '"'
- return s
-
-
-def gn_args_are_generated(lines):
- for line in lines:
- if re.match("^\s*#.*REMOVE THIS LINE", line):
- return True
- return False
-
-
-def read_gn_args(args_filename):
- if not os.path.exists(args_filename):
- return (None, False) # No content, not hand edited.
-
- with open(args_filename) as f:
- lines = f.read().splitlines()
- args = [l.strip() for l in lines if not re.match("^\s*(#|$)", l)]
- hand_edited = not gn_args_are_generated(lines)
- return (args, hand_edited)
-
-
-def write_gn_args(args_filename, args):
- assert not gn_args_are_generated(args) # No header -> hand crafted.
- lines = gn_args_header + args
- assert gn_args_are_generated(lines) # With header -> generated.
-
- # Ensure the directory where args.gn goes exists.
- d = os.path.dirname(args_filename)
- if not os.path.isdir(d):
- os.makedirs(d)
-
- with open(args_filename, "w") as f:
- f.write("\n".join(lines) + "\n")
-
-
-def generate_gn_args(mode):
- out = []
- if mode == "release":
- out += ["is_official_build=true", "symbol_level=0"]
- elif mode == "debug":
- out += ["is_debug=true"]
- else:
- print "Bad mode {}. Use 'release' or 'debug' (default)" % mode
- sys.exit(1)
-
- if "DENO_BUILD_ARGS" in os.environ:
- out += os.environ["DENO_BUILD_ARGS"].split()
-
- # Check if sccache is in the path, and if so we set cc_wrapper.
- cc_wrapper = find_executable("sccache")
- if not cc_wrapper:
- cc_wrapper = third_party.get_prebuilt_tool_path("sccache")
-
- if os.path.exists(cc_wrapper):
- # The gn toolchain does not shell escape cc_wrapper, so do it here.
- out += ['cc_wrapper=%s' % gn_string(shell_quote(cc_wrapper))]
- if os.name == "nt":
- # Disable treat_warnings_as_errors until this sccache bug is fixed:
- # https://github.com/mozilla/sccache/issues/264
- out += ["treat_warnings_as_errors=false"]
-
- return out
-
-
-def gn_exe():
- if "DENO_GN_PATH" in os.environ:
- return os.environ["DENO_GN_PATH"]
- else:
- return third_party.get_buildtools_tool_path("gn")
-
-
-# gn gen.
-def gn_gen(mode):
- os.environ["DENO_BUILD_MODE"] = mode
-
- # Rather than using gn gen --args we write directly to the args.gn file.
- # This is to avoid quoting/escaping complications when passing overrides as
- # command-line arguments.
- args_filename = os.path.join(build_path(), "args.gn")
-
- # Check if args.gn exists, and if it was auto-generated or handcrafted.
- existing_gn_args, hand_edited = read_gn_args(args_filename)
-
- # If args.gn wasn't handcrafted, regenerate it.
- if hand_edited:
- print "%s: Using gn options from hand edited '%s'." % (mode,
- args_filename)
- gn_args = existing_gn_args
- else:
- print "%s: Writing gn options to '%s'." % (mode, args_filename)
- gn_args = generate_gn_args(mode)
- if gn_args != existing_gn_args:
- write_gn_args(args_filename, gn_args)
-
- for line in gn_args:
- print " " + line
-
- run([gn_exe(), "gen", build_path()],
- cwd=libdeno_path,
- env=third_party.google_env())
-
-
-if __name__ == '__main__':
- sys.exit(main())