mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 08:24:39 +00:00
[build] Move dart2js run for Observatory from python to GN
Change-Id: Ief90d6125e30c6bed808bacce521fc84957fddb9 Reviewed-on: https://dart-review.googlesource.com/63662 Commit-Queue: Zach Anderson <zra@google.com> Reviewed-by: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
parent
3c5fe3c7e4
commit
7d7e39a952
|
@ -73,9 +73,8 @@ template("_compiled_action") {
|
||||||
# If that's not the case, we'll need another argument to the script to
|
# If that's not the case, we'll need another argument to the script to
|
||||||
# specify this, since we can't know what the output name is (it might be in
|
# specify this, since we can't know what the output name is (it might be in
|
||||||
# another file not processed yet).
|
# another file not processed yet).
|
||||||
host_executable =
|
host_executable = get_label_info(host_tool, "root_out_dir") + "/" +
|
||||||
get_label_info(host_tool, "root_out_dir") + "/" +
|
get_label_info(host_tool, "name") + executable_suffix
|
||||||
get_label_info(host_tool, "name") + executable_suffix
|
|
||||||
|
|
||||||
# Add the executable itself as an input.
|
# Add the executable itself as an input.
|
||||||
inputs += [ host_executable ]
|
inputs += [ host_executable ]
|
||||||
|
@ -102,9 +101,9 @@ template("_compiled_action") {
|
||||||
|
|
||||||
template("_prebuilt_tool_action") {
|
template("_prebuilt_tool_action") {
|
||||||
assert(defined(invoker.binary),
|
assert(defined(invoker.binary),
|
||||||
"The path to where the prebuilt binary lives must be defined")
|
"The path to where the prebuilt binary lives must be defined")
|
||||||
assert(defined(invoker.target),
|
assert(defined(invoker.target),
|
||||||
"The target to use if the prebuilt doesn't exist must be defined")
|
"The target to use if the prebuilt doesn't exist must be defined")
|
||||||
|
|
||||||
vm_args = []
|
vm_args = []
|
||||||
if (defined(invoker.vm_args)) {
|
if (defined(invoker.vm_args)) {
|
||||||
|
@ -112,15 +111,16 @@ template("_prebuilt_tool_action") {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_is_fuchsia || prebuilt_dart_exe_works) {
|
if (_is_fuchsia || prebuilt_dart_exe_works) {
|
||||||
not_needed(invoker, ["target"])
|
not_needed(invoker, [ "target" ])
|
||||||
action(target_name) {
|
action(target_name) {
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"depfile",
|
[
|
||||||
"deps",
|
"depfile",
|
||||||
"outputs",
|
"deps",
|
||||||
"testonly",
|
"outputs",
|
||||||
"visibility",
|
"testonly",
|
||||||
])
|
"visibility",
|
||||||
|
])
|
||||||
script = "$_dart_root/build/gn_run_binary.py"
|
script = "$_dart_root/build/gn_run_binary.py"
|
||||||
|
|
||||||
inputs = []
|
inputs = []
|
||||||
|
@ -136,18 +136,14 @@ template("_prebuilt_tool_action") {
|
||||||
}
|
}
|
||||||
|
|
||||||
args = [
|
args = [
|
||||||
"compiled_action",
|
"compiled_action",
|
||||||
rebase_path(invoker.binary),
|
rebase_path(invoker.binary),
|
||||||
] + vm_args
|
] + vm_args
|
||||||
if (defined(invoker.packages)) {
|
if (defined(invoker.packages)) {
|
||||||
args += [
|
args += [ "--packages=" + rebase_path(invoker.packages) ]
|
||||||
"--packages=" + rebase_path(invoker.packages),
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
if (defined(invoker.dfe)) {
|
if (defined(invoker.dfe)) {
|
||||||
args += [
|
args += [ "--dfe=" + rebase_path(invoker.dfe) ]
|
||||||
"--dfe=" + rebase_path(invoker.dfe),
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
if (defined(invoker.script)) {
|
if (defined(invoker.script)) {
|
||||||
args += [ rebase_path(invoker.script) ]
|
args += [ rebase_path(invoker.script) ]
|
||||||
|
@ -155,16 +151,17 @@ template("_prebuilt_tool_action") {
|
||||||
args += invoker.args
|
args += invoker.args
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
not_needed(invoker, ["binary"])
|
not_needed(invoker, [ "binary" ])
|
||||||
_compiled_action(target_name) {
|
_compiled_action(target_name) {
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"depfile",
|
[
|
||||||
"deps",
|
"depfile",
|
||||||
"inputs",
|
"deps",
|
||||||
"outputs",
|
"inputs",
|
||||||
"testonly",
|
"outputs",
|
||||||
"visibility",
|
"testonly",
|
||||||
])
|
"visibility",
|
||||||
|
])
|
||||||
|
|
||||||
if (defined(invoker.script)) {
|
if (defined(invoker.script)) {
|
||||||
inputs += [ invoker.script ]
|
inputs += [ invoker.script ]
|
||||||
|
@ -176,9 +173,7 @@ template("_prebuilt_tool_action") {
|
||||||
tool = invoker.target
|
tool = invoker.target
|
||||||
args = vm_args
|
args = vm_args
|
||||||
if (defined(invoker.packages)) {
|
if (defined(invoker.packages)) {
|
||||||
args += [
|
args += [ "--packages=" + rebase_path(invoker.packages) ]
|
||||||
"--packages=" + rebase_path(invoker.packages),
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
if (defined(invoker.script)) {
|
if (defined(invoker.script)) {
|
||||||
args += [ rebase_path(invoker.script) ]
|
args += [ rebase_path(invoker.script) ]
|
||||||
|
@ -226,23 +221,39 @@ template("prebuilt_dart_action") {
|
||||||
binary = prebuilt_dart
|
binary = prebuilt_dart
|
||||||
dfe = "$prebuilt_dart_sdk/bin/snapshots/kernel-service.dart.snapshot"
|
dfe = "$prebuilt_dart_sdk/bin/snapshots/kernel-service.dart.snapshot"
|
||||||
} else {
|
} else {
|
||||||
binary =
|
binary = "$_dart_root/tools/sdks/dart-sdk/bin/dart$executable_suffix"
|
||||||
"$_dart_root/tools/sdks/dart-sdk/bin/dart$executable_suffix"
|
dfe = "$_dart_root/tools/sdks/dart-sdk/bin/snapshots/kernel-service.dart.snapshot"
|
||||||
dfe =
|
|
||||||
"$_dart_root/tools/sdks/dart-sdk/bin/snapshots/kernel-service.dart.snapshot"
|
|
||||||
}
|
}
|
||||||
target = "$_dart_root/runtime/bin:dart_bootstrap"
|
target = "$_dart_root/runtime/bin:dart_bootstrap"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_is_fuchsia) {
|
if (_is_fuchsia) {
|
||||||
template("_prebuilt_gen_snapshot_action") {
|
template("_prebuilt_gen_snapshot_action") {
|
||||||
_prebuilt_tool_action(target_name) {
|
_prebuilt_tool_action(target_name) {
|
||||||
forward_variables_from(invoker, "*")
|
forward_variables_from(invoker, "*")
|
||||||
binary = prebuilt_gen_snapshot
|
binary = prebuilt_gen_snapshot
|
||||||
target = "error"
|
target = "error"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template("prebuilt_dart2js_action") {
|
||||||
|
assert(defined(invoker.script), "script must be defined for $target_name")
|
||||||
|
assert(defined(invoker.outputs), "outputs must be defined for $target_name")
|
||||||
|
assert(defined(invoker.args), "args must be defined for $target_name")
|
||||||
|
|
||||||
|
_prebuilt_tool_action(target_name) {
|
||||||
|
forward_variables_from(invoker, "*")
|
||||||
|
|
||||||
|
# TODO(zra): On Fuchsia use a prebuilt dart2js, or a prebuilt Observatory.
|
||||||
|
extension = ""
|
||||||
|
if (is_win) {
|
||||||
|
extension = ".bat"
|
||||||
|
}
|
||||||
|
binary = "$_dart_root/tools/sdks/dart-sdk/bin/dart2js${extension}"
|
||||||
|
target = "error"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# This template runs the specified tool produced by the in-progress build.
|
# This template runs the specified tool produced by the in-progress build.
|
||||||
|
@ -283,15 +294,16 @@ template("_built_tool_action") {
|
||||||
}
|
}
|
||||||
|
|
||||||
_compiled_action(target_name) {
|
_compiled_action(target_name) {
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"depfile",
|
[
|
||||||
"deps",
|
"depfile",
|
||||||
"inputs",
|
"deps",
|
||||||
"outputs",
|
"inputs",
|
||||||
"tool",
|
"outputs",
|
||||||
"testonly",
|
"tool",
|
||||||
"visibility",
|
"testonly",
|
||||||
])
|
"visibility",
|
||||||
|
])
|
||||||
|
|
||||||
if (!defined(invoker.inputs)) {
|
if (!defined(invoker.inputs)) {
|
||||||
inputs = []
|
inputs = []
|
||||||
|
@ -341,19 +353,20 @@ template("dart_action") {
|
||||||
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
||||||
_built_tool_action(target_name) {
|
_built_tool_action(target_name) {
|
||||||
tool = "$_dart_root/runtime/bin:dart"
|
tool = "$_dart_root/runtime/bin:dart"
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"args",
|
[
|
||||||
"depfile",
|
"args",
|
||||||
"deps",
|
"depfile",
|
||||||
"inputs",
|
"deps",
|
||||||
"outputs",
|
"inputs",
|
||||||
"packages",
|
"outputs",
|
||||||
"script",
|
"packages",
|
||||||
"testonly",
|
"script",
|
||||||
"tool",
|
"testonly",
|
||||||
"visibility",
|
"tool",
|
||||||
"vm_args",
|
"visibility",
|
||||||
])
|
"vm_args",
|
||||||
|
])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
prebuilt_dart_action(target_name) {
|
prebuilt_dart_action(target_name) {
|
||||||
|
@ -389,19 +402,20 @@ template("dart_bootstrap_action") {
|
||||||
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
||||||
_built_tool_action(target_name) {
|
_built_tool_action(target_name) {
|
||||||
tool = "$_dart_root/runtime/bin:dart_bootstrap"
|
tool = "$_dart_root/runtime/bin:dart_bootstrap"
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"args",
|
[
|
||||||
"depfile",
|
"args",
|
||||||
"deps",
|
"depfile",
|
||||||
"inputs",
|
"deps",
|
||||||
"outputs",
|
"inputs",
|
||||||
"packages",
|
"outputs",
|
||||||
"script",
|
"packages",
|
||||||
"testonly",
|
"script",
|
||||||
"tool",
|
"testonly",
|
||||||
"visibility",
|
"tool",
|
||||||
"vm_args",
|
"visibility",
|
||||||
])
|
"vm_args",
|
||||||
|
])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
# We already have a prebuilt dart at the right version, so there is no
|
# We already have a prebuilt dart at the right version, so there is no
|
||||||
|
@ -432,23 +446,25 @@ template("dart_bootstrap_action") {
|
||||||
# testonly
|
# testonly
|
||||||
# visibility
|
# visibility
|
||||||
template("gen_snapshot_action") {
|
template("gen_snapshot_action") {
|
||||||
assert(!defined(invoker.script),
|
assert(
|
||||||
|
!defined(invoker.script),
|
||||||
"script must not be defined for $target_name. If there is a script use args instead.")
|
"script must not be defined for $target_name. If there is a script use args instead.")
|
||||||
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
if (!_is_fuchsia || !use_prebuilt_dart_sdk) {
|
||||||
_built_tool_action(target_name) {
|
_built_tool_action(target_name) {
|
||||||
tool = "$_dart_root/runtime/bin:gen_snapshot"
|
tool = "$_dart_root/runtime/bin:gen_snapshot"
|
||||||
forward_variables_from(invoker, [
|
forward_variables_from(invoker,
|
||||||
"args",
|
[
|
||||||
"depfile",
|
"args",
|
||||||
"deps",
|
"depfile",
|
||||||
"inputs",
|
"deps",
|
||||||
"outputs",
|
"inputs",
|
||||||
"packages",
|
"outputs",
|
||||||
"testonly",
|
"packages",
|
||||||
"tool",
|
"testonly",
|
||||||
"visibility",
|
"tool",
|
||||||
"vm_args",
|
"visibility",
|
||||||
])
|
"vm_args",
|
||||||
|
])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_prebuilt_gen_snapshot_action(target_name) {
|
_prebuilt_gen_snapshot_action(target_name) {
|
||||||
|
|
|
@ -231,7 +231,6 @@ library_for_all_configs("libdart") {
|
||||||
action("generate_version_cc_file") {
|
action("generate_version_cc_file") {
|
||||||
inputs = [
|
inputs = [
|
||||||
"../tools/utils.py",
|
"../tools/utils.py",
|
||||||
"../tools/print_version.py",
|
|
||||||
"../tools/VERSION",
|
"../tools/VERSION",
|
||||||
"vm/version_in.cc",
|
"vm/version_in.cc",
|
||||||
]
|
]
|
||||||
|
|
|
@ -2,78 +2,62 @@
|
||||||
# Use of this source code is governed by a BSD-style license that can be
|
# Use of this source code is governed by a BSD-style license that can be
|
||||||
# found in the LICENSE file.
|
# found in the LICENSE file.
|
||||||
|
|
||||||
import("../../build/dart/dart_host_sdk_toolchain.gni")
|
import("../../build/dart/dart_action.gni")
|
||||||
import("../../build/dart/prebuilt_dart_sdk.gni")
|
|
||||||
import("../../build/executable_suffix.gni")
|
|
||||||
import("observatory_sources.gni")
|
import("observatory_sources.gni")
|
||||||
|
|
||||||
# Construct arguments to the observatory tool for finding pub.
|
prebuilt_dart2js_action("build_observatory") {
|
||||||
build_deps = []
|
script = "web/main.dart"
|
||||||
build_args = []
|
|
||||||
if (!prebuilt_dart_exe_works) {
|
|
||||||
build_deps += [ "../bin:dart_bootstrap($dart_host_toolchain)" ]
|
|
||||||
|
|
||||||
dart_out_dir = get_label_info("../bin:dart_bootstrap($dart_host_toolchain)",
|
# dart2js produces a .deps file, but it is not in a format that is understood
|
||||||
"root_out_dir")
|
# by ninja, so we explicitly list all the sources here.
|
||||||
dart_bootstrap = rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
|
inputs = [ ".packages" ] + observatory_sources
|
||||||
|
|
||||||
build_args = [
|
|
||||||
"--sdk=True",
|
|
||||||
"--dart-executable",
|
|
||||||
dart_bootstrap,
|
|
||||||
]
|
|
||||||
} else {
|
|
||||||
build_args = [ "--sdk=True" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
current_dir = rebase_path(".", "//")
|
|
||||||
|
|
||||||
action("build_observatory") {
|
|
||||||
deps = build_deps
|
|
||||||
|
|
||||||
sources = rebase_path(observatory_sources, "", ".")
|
|
||||||
|
|
||||||
inputs = sources + [ rebase_path(".packages") ]
|
|
||||||
|
|
||||||
script = "../../tools/observatory_tool.py"
|
|
||||||
args = build_args + [
|
|
||||||
"--silent=True",
|
|
||||||
"--directory",
|
|
||||||
rebase_path("."),
|
|
||||||
"--command",
|
|
||||||
"build",
|
|
||||||
rebase_path("web/main.dart"),
|
|
||||||
rebase_path("$target_gen_dir/observatory/web/main.dart.js"),
|
|
||||||
rebase_path(".packages"),
|
|
||||||
]
|
|
||||||
|
|
||||||
|
output = "$target_gen_dir/observatory/web/main.dart.js"
|
||||||
outputs = [
|
outputs = [
|
||||||
"$target_gen_dir/observatory/web/main.dart.js",
|
output,
|
||||||
|
]
|
||||||
|
|
||||||
|
version_string = exec_script("../../tools/make_version.py",
|
||||||
|
[
|
||||||
|
"--quiet",
|
||||||
|
"--no_git_hash",
|
||||||
|
], # Arguments to the script
|
||||||
|
"trim string", # Input conversions
|
||||||
|
[
|
||||||
|
"../../tools/VERSION",
|
||||||
|
"../tools/utils.py",
|
||||||
|
]) # Dependencies
|
||||||
|
|
||||||
|
args = [
|
||||||
|
"--no-preview-dart-2",
|
||||||
|
"-DOBS_VER=${version_string}",
|
||||||
|
"-o",
|
||||||
|
rebase_path(output),
|
||||||
|
"--packages=" + rebase_path(".packages"),
|
||||||
|
"--minify",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# TODO(zra): Investigate using GN's copy() with set_sources_assignment_filter
|
||||||
|
# instead of using a python script.
|
||||||
action("deploy_observatory") {
|
action("deploy_observatory") {
|
||||||
deps = [ ":build_observatory" ] + build_deps
|
deps = [
|
||||||
|
":build_observatory",
|
||||||
|
]
|
||||||
|
|
||||||
script = "../../tools/observatory_tool.py"
|
script = "../../tools/observatory_tool.py"
|
||||||
|
|
||||||
inputs = [
|
inputs = [
|
||||||
script,
|
|
||||||
"$target_gen_dir/observatory/web/main.dart.js",
|
"$target_gen_dir/observatory/web/main.dart.js",
|
||||||
]
|
]
|
||||||
|
|
||||||
args = build_args + [
|
args = [
|
||||||
"--silent=True",
|
rebase_path("$target_out_dir/observatory/deployed"),
|
||||||
"--directory",
|
rebase_path("web"),
|
||||||
rebase_path("$target_out_dir/observatory"),
|
rebase_path("lib"),
|
||||||
"--command",
|
rebase_path("$target_gen_dir/observatory/web/main.dart.js"),
|
||||||
"deploy",
|
rebase_path("../../third_party/observatory_pub_packages/packages"),
|
||||||
rebase_path("$target_out_dir/observatory/deployed"),
|
]
|
||||||
rebase_path("web"),
|
|
||||||
rebase_path("lib"),
|
|
||||||
rebase_path("$target_gen_dir/observatory/web/main.dart.js"),
|
|
||||||
rebase_path("../../third_party/observatory_pub_packages/packages"),
|
|
||||||
]
|
|
||||||
|
|
||||||
outputs = [
|
outputs = [
|
||||||
"$target_out_dir/observatory/deployed/web/main.dart.js",
|
"$target_out_dir/observatory/deployed/web/main.dart.js",
|
||||||
|
|
|
@ -96,7 +96,7 @@ def main(args):
|
||||||
parser.add_option("--input",
|
parser.add_option("--input",
|
||||||
action="store",
|
action="store",
|
||||||
type="string",
|
type="string",
|
||||||
help="input template file")
|
help="input template file.")
|
||||||
parser.add_option("--no_git_hash",
|
parser.add_option("--no_git_hash",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
default=False,
|
default=False,
|
||||||
|
@ -111,10 +111,23 @@ def main(args):
|
||||||
help="disable console output")
|
help="disable console output")
|
||||||
|
|
||||||
(options, args) = parser.parse_args()
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
|
# If there is no input template, then write the bare version string to
|
||||||
|
# options.output. If there is no options.output, then write the version
|
||||||
|
# string to stdout.
|
||||||
|
if not options.input:
|
||||||
|
version_string = MakeVersionString(
|
||||||
|
options.quiet, options.no_git_hash, options.custom_for_pub)
|
||||||
|
if options.output:
|
||||||
|
open(options.output, 'w').write(version_string)
|
||||||
|
else:
|
||||||
|
print version_string
|
||||||
|
return 0
|
||||||
|
|
||||||
if not options.output:
|
if not options.output:
|
||||||
sys.stderr.write('--output not specified\n')
|
sys.stderr.write('--output not specified\n')
|
||||||
return -1
|
return -1
|
||||||
if not len(options.input):
|
if not options.input:
|
||||||
sys.stderr.write('--input not specified\n')
|
sys.stderr.write('--input not specified\n')
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
|
|
@ -4,17 +4,10 @@
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
# BSD-style license that can be found in the LICENSE file.
|
||||||
"""Helper for building and deploying Observatory"""
|
"""Helper for building and deploying Observatory"""
|
||||||
|
|
||||||
import argparse
|
|
||||||
import os
|
import os
|
||||||
import platform
|
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
|
||||||
import sys
|
import sys
|
||||||
import utils
|
|
||||||
|
|
||||||
SCRIPT_DIR = os.path.dirname(sys.argv[0])
|
|
||||||
DART_ROOT = os.path.realpath(os.path.join(SCRIPT_DIR, '..'))
|
|
||||||
DART2JS_PATH = os.path.join(DART_ROOT, 'pkg', 'compiler', 'bin', 'dart2js.dart')
|
|
||||||
IGNORE_PATTERNS = shutil.ignore_patterns(
|
IGNORE_PATTERNS = shutil.ignore_patterns(
|
||||||
'$sdk',
|
'$sdk',
|
||||||
'*.concat.js',
|
'*.concat.js',
|
||||||
|
@ -37,112 +30,6 @@ IGNORE_PATTERNS = shutil.ignore_patterns(
|
||||||
'webcomponents-lite.js',
|
'webcomponents-lite.js',
|
||||||
'webcomponents.*')
|
'webcomponents.*')
|
||||||
|
|
||||||
usage = """observatory_tool.py [options]"""
|
|
||||||
|
|
||||||
def DisplayBootstrapWarning():
|
|
||||||
print """\
|
|
||||||
|
|
||||||
WARNING: Your system cannot run the checked-in Dart SDK. Using the
|
|
||||||
bootstrap Dart executable will make debug builds slow.
|
|
||||||
Please see the Wiki for instructions on replacing the checked-in Dart SDK.
|
|
||||||
|
|
||||||
https://github.com/dart-lang/sdk/wiki/The-checked-in-SDK-in-tools
|
|
||||||
|
|
||||||
To use the dart_bootstrap binary please update the Build function
|
|
||||||
in the tools/observatory_tool.py script.
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
def DisplayFailureMessage():
|
|
||||||
print """\
|
|
||||||
|
|
||||||
ERROR: Observatory failed to build. What should you do?
|
|
||||||
|
|
||||||
1. Revert to a working revision of the Dart VM
|
|
||||||
2. Contact zra@, rmacnak@, dart-vm-team@
|
|
||||||
3. File a bug: https://github.com/dart-lang/sdk/issues/new
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Run |command|. If its return code is 0, return 0 and swallow its output.
|
|
||||||
# If its return code is non-zero, emit its output unless |always_silent| is
|
|
||||||
# True, and return the return code.
|
|
||||||
def RunCommand(command, always_silent=False):
|
|
||||||
try:
|
|
||||||
subprocess.check_output(command,
|
|
||||||
stderr=subprocess.STDOUT)
|
|
||||||
return 0
|
|
||||||
except subprocess.CalledProcessError as e:
|
|
||||||
if not always_silent:
|
|
||||||
print ("Command failed: " + ' '.join(command) + "\n" +
|
|
||||||
"output: " + e.output)
|
|
||||||
DisplayFailureMessage()
|
|
||||||
return e.returncode
|
|
||||||
|
|
||||||
def BuildArguments():
|
|
||||||
result = argparse.ArgumentParser(usage=usage)
|
|
||||||
result.add_argument("--dart-executable", help="dart executable", default=None)
|
|
||||||
result.add_argument("--dart2js-executable", help="dart2js executable",
|
|
||||||
default=None)
|
|
||||||
result.add_argument("--directory", help="observatory root", default=None)
|
|
||||||
result.add_argument("--command", help="[build, deploy]", default=None)
|
|
||||||
result.add_argument("--silent", help="silence all output", default=None)
|
|
||||||
result.add_argument("--sdk", help="Use prebuilt sdk", default=None)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def ProcessOptions(options, args):
|
|
||||||
# Fix broken boolean parsing in argparse, where False ends up being True.
|
|
||||||
if (options.silent is not None) and (options.silent == "True"):
|
|
||||||
options.silent = True
|
|
||||||
elif (options.silent is None) or (options.silent == "False"):
|
|
||||||
options.silent = False
|
|
||||||
else:
|
|
||||||
print "--silent expects 'True' or 'False' argument."
|
|
||||||
return False
|
|
||||||
|
|
||||||
if (options.sdk is not None) and (options.sdk == "True"):
|
|
||||||
options.sdk = True
|
|
||||||
elif (options.sdk is None) or (options.sdk == "False"):
|
|
||||||
options.sdk = False
|
|
||||||
else:
|
|
||||||
print "--sdk expects 'True' or 'False' argument."
|
|
||||||
return False
|
|
||||||
|
|
||||||
# Required options.
|
|
||||||
if options.command is None or options.directory is None:
|
|
||||||
return False
|
|
||||||
|
|
||||||
# If a dart2js execuble was provided, try and use that.
|
|
||||||
# TODO(whesse): Drop the dart2js-executable option if it isn't used.
|
|
||||||
if options.dart2js_executable is not None:
|
|
||||||
try:
|
|
||||||
if 0 == RunCommand([options.dart2js_executable, '--version'],
|
|
||||||
always_silent=True):
|
|
||||||
return True
|
|
||||||
except OSError as e:
|
|
||||||
pass
|
|
||||||
options.dart2js_executable = None
|
|
||||||
|
|
||||||
# Use the checked in dart2js executable.
|
|
||||||
if options.sdk and utils.CheckedInSdkCheckExecutable():
|
|
||||||
dart2js_binary = 'dart2js.bat' if utils.IsWindows() else 'dart2js'
|
|
||||||
options.dart2js_executable = os.path.join(utils.CheckedInSdkPath(),
|
|
||||||
'bin',
|
|
||||||
dart2js_binary)
|
|
||||||
try:
|
|
||||||
if 0 == RunCommand([options.dart2js_executable, '--version'],
|
|
||||||
always_silent=True):
|
|
||||||
return True
|
|
||||||
except OSError as e:
|
|
||||||
pass
|
|
||||||
options.dart2js_executable = None
|
|
||||||
|
|
||||||
# We need a dart executable and will run from source
|
|
||||||
return (options.dart_executable is not None)
|
|
||||||
|
|
||||||
def ChangeDirectory(directory):
|
|
||||||
os.chdir(directory);
|
|
||||||
|
|
||||||
# - Copy over the filtered web directory
|
# - Copy over the filtered web directory
|
||||||
# - Merge in the .js file
|
# - Merge in the .js file
|
||||||
# - Copy over the filtered dependency lib directories
|
# - Copy over the filtered dependency lib directories
|
||||||
|
@ -167,62 +54,11 @@ def Deploy(output_dir, web_dir, observatory_lib, js_file, pub_packages_dir):
|
||||||
shutil.copytree(observatory_lib, os.path.join(packages_dir, 'observatory'),
|
shutil.copytree(observatory_lib, os.path.join(packages_dir, 'observatory'),
|
||||||
ignore=IGNORE_PATTERNS)
|
ignore=IGNORE_PATTERNS)
|
||||||
|
|
||||||
def Build(dart_executable,
|
|
||||||
dart2js_executable,
|
|
||||||
script_path,
|
|
||||||
output_path,
|
|
||||||
packages_path,
|
|
||||||
silent):
|
|
||||||
if dart2js_executable is not None:
|
|
||||||
command = [dart2js_executable]
|
|
||||||
else:
|
|
||||||
if not silent:
|
|
||||||
DisplayBootstrapWarning()
|
|
||||||
command = [dart_executable, DART2JS_PATH]
|
|
||||||
command += ['--no-preview-dart-2']
|
|
||||||
command += ['-DOBS_VER=' + utils.GetVersion(no_git_hash=True)]
|
|
||||||
command += [script_path, '-o', output_path, '--packages=%s' % packages_path]
|
|
||||||
# Add the defaults pub used
|
|
||||||
command += ['--minify']
|
|
||||||
if not silent:
|
|
||||||
print >> sys.stderr, 'Running command "%s"' % command
|
|
||||||
return RunCommand(command)
|
|
||||||
|
|
||||||
def ExecuteCommand(options, args):
|
def Main():
|
||||||
cmd = options.command
|
args = sys.argv[1:]
|
||||||
if (cmd == 'build'):
|
return Deploy(args[0], args[1], args[2], args[3], args[4])
|
||||||
return Build(options.dart_executable,
|
|
||||||
options.dart2js_executable,
|
|
||||||
args[0],
|
|
||||||
args[1],
|
|
||||||
args[2],
|
|
||||||
options.silent)
|
|
||||||
elif (cmd == 'deploy'):
|
|
||||||
Deploy(args[0], args[1], args[2], args[3], args[4])
|
|
||||||
else:
|
|
||||||
print >> sys.stderr, ('ERROR: command "%s" not supported') % (cmd)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
def main():
|
|
||||||
# Parse the options.
|
|
||||||
parser = BuildArguments()
|
|
||||||
(options, args) = parser.parse_known_args()
|
|
||||||
if not ProcessOptions(options, args):
|
|
||||||
parser.print_help()
|
|
||||||
return 1
|
|
||||||
# Calculate absolute paths before changing directory.
|
|
||||||
if (options.dart_executable != None):
|
|
||||||
options.dart_executable = os.path.abspath(options.dart_executable)
|
|
||||||
if (options.dart2js_executable != None):
|
|
||||||
options.dart2js_executable = os.path.abspath(options.dart2js_executable)
|
|
||||||
if len(args) == 1:
|
|
||||||
args[0] = os.path.abspath(args[0])
|
|
||||||
try:
|
|
||||||
# Pub must be run from the project's root directory.
|
|
||||||
ChangeDirectory(options.directory)
|
|
||||||
return ExecuteCommand(options, args)
|
|
||||||
except:
|
|
||||||
DisplayFailureMessage()
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(main());
|
sys.exit(Main());
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
#
|
|
||||||
# Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
|
||||||
# for details. All rights reserved. Use of this source code is governed by a
|
|
||||||
# BSD-style license that can be found in the LICENSE file.
|
|
||||||
#
|
|
||||||
# A script which will be invoked from gyp to print the current version of the
|
|
||||||
# SDK.
|
|
||||||
#
|
|
||||||
# Usage: print_version
|
|
||||||
#
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import utils
|
|
||||||
|
|
||||||
def Main():
|
|
||||||
version = utils.GetVersion()
|
|
||||||
if not version:
|
|
||||||
print 'Error: Couldn\'t determine version string.'
|
|
||||||
return 1
|
|
||||||
print version
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
sys.exit(Main())
|
|
|
@ -41,6 +41,7 @@ dart_action("dart2js_create_snapshot_entry") {
|
||||||
inputs = [
|
inputs = [
|
||||||
"../../sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart",
|
"../../sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart",
|
||||||
"$target_gen_dir/dart2js_files.stamp",
|
"$target_gen_dir/dart2js_files.stamp",
|
||||||
|
"../../tools/make_version.py",
|
||||||
"../../tools/VERSION",
|
"../../tools/VERSION",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,9 @@ import 'dart:async';
|
||||||
|
|
||||||
Future<String> getVersion(var rootPath) {
|
Future<String> getVersion(var rootPath) {
|
||||||
var suffix = Platform.operatingSystem == 'windows' ? '.exe' : '';
|
var suffix = Platform.operatingSystem == 'windows' ? '.exe' : '';
|
||||||
var printVersionScript = rootPath.resolve("tools/print_version.py");
|
var printVersionScript = rootPath.resolve("tools/make_version.py");
|
||||||
return Process
|
return Process
|
||||||
.run("python$suffix", [printVersionScript.toFilePath()]).then((result) {
|
.run("python$suffix", [printVersionScript.toFilePath(), "--quiet"]).then((result) {
|
||||||
if (result.exitCode != 0) {
|
if (result.exitCode != 0) {
|
||||||
throw "Could not generate version";
|
throw "Could not generate version";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue