[ddc] Break out builds of ddc module format

Build all ddc module format outputs in separate invocations of the
compiler. This allows for DDC to detect `--modules=ddc` and
`--canary` and enable library bundles. This alternate "ddc" format
is where hot reload is being developed and tested. When ready, it
will become the only supported module format.

Change-Id: I932237c15d710d92db327177a8d6ca59d21a0a23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/378545
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
This commit is contained in:
Nicholas Shahan 2024-08-07 17:41:41 +00:00 committed by Commit Queue
parent d0b0e84027
commit b62e1e6902

View file

@ -114,8 +114,10 @@ group("ddc_stable_test_local") {
group("ddc_canary_test_local") {
deps = [
":ddc_canary_sdk",
":ddc_canary_sdk_ddc_module",
":ddc_canary_test_pkg",
":ddc_canary_unsound_sdk",
":ddc_canary_unsound_sdk_ddc_module",
]
}
@ -149,14 +151,22 @@ group("ddc_stable_test_pkg") {
# Compiles to JavaScript using DDC (canary) all packages imported in tests.
group("ddc_canary_test_pkg") {
deps = [
":async_helper_canary_ddc_js",
":async_helper_canary_js",
":async_helper_canary_unsound_ddc_js",
":async_helper_canary_unsound_js",
":ddc_test_pkg_outline",
":expect_canary_ddc_js",
":expect_canary_js",
":expect_canary_unsound_ddc_js",
":expect_canary_unsound_js",
":js_canary_ddc_js",
":js_canary_js",
":js_canary_unsound_ddc_js",
":js_canary_unsound_js",
":meta_canary_ddc_js",
":meta_canary_js",
":meta_canary_unsound_ddc_js",
":meta_canary_unsound_js",
]
}
@ -179,6 +189,8 @@ template("ddc_compile") {
"Need 'package' in $target_name (the name of the package)")
assert(defined(invoker.sound_null_safety),
"Need 'sound_null_safety' in $target_name.")
assert(defined(invoker.canary), "Need 'canary' in $target_name.")
assert(defined(invoker.modules), "Need 'modules' in $target_name.")
# Determine one of four possible directories for the JavaScript output to be
# generated:
@ -214,7 +226,7 @@ template("ddc_compile") {
prebuilt_dart_action(target_name) {
script = "../../pkg/dev_compiler/bin/dartdevc.dart"
module = invoker.package
package_name = invoker.package
out_dir = rebase_path("$js_gen_dir")
sdk_path = rebase_path(sdk_outline)
pkg_root = rebase_path("$root_build_dir/../../pkg")
@ -229,29 +241,32 @@ template("ddc_compile") {
"$target_gen_dir/ddc_files.stamp",
]
outputs = [
"$js_gen_dir/amd/$module.js",
"$js_gen_dir/amd/$module.js.map",
"$js_gen_dir/ddc/$module.js",
"$js_gen_dir/ddc/$module.js.map",
]
outputs = []
args = []
foreach(module, invoker.modules) {
outputs += [
"$js_gen_dir/$module/$package_name.js",
"$js_gen_dir/$module/$package_name.js.map",
]
args += [
"--modules=$module",
"-o$out_dir/$module/$package_name.js",
]
}
vm_args = [ "-Dsdk_hash=$sdk_hash" ]
args = [
args += [
"--no-summarize",
"--multi-root-output-path=$pkg_root",
"--dart-sdk-summary=$sdk_path",
"--modules=amd",
"-o$out_dir/amd/$module.js",
"--modules=ddc",
"-o$out_dir/ddc/$module.js",
"package:$module/$module.dart",
"package:$package_name/$package_name.dart",
]
if (defined(invoker.extra_libraries)) {
foreach(lib, invoker.extra_libraries) {
args += [ "package:$module/$lib.dart" ]
args += [ "package:$package_name/$lib.dart" ]
}
}
@ -349,24 +364,48 @@ package_kernel_outline("async_helper_outline_unsound") {
ddc_compile("async_helper_stable_js") {
package = "async_helper"
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = true
}
ddc_compile("async_helper_canary_js") {
package = "async_helper"
canary = true
modules = [ "amd" ]
sound_null_safety = true
}
ddc_compile("async_helper_canary_ddc_js") {
package = "async_helper"
canary = true
modules = [ "ddc" ]
sound_null_safety = true
}
ddc_compile("async_helper_stable_unsound_js") {
package = "async_helper"
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = false
}
ddc_compile("async_helper_canary_unsound_js") {
package = "async_helper"
canary = true
modules = [ "amd" ]
sound_null_safety = false
}
ddc_compile("async_helper_canary_unsound_ddc_js") {
package = "async_helper"
canary = true
modules = [ "ddc" ]
sound_null_safety = false
}
@ -386,6 +425,10 @@ ddc_compile("expect_stable_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = true
}
@ -393,6 +436,15 @@ ddc_compile("expect_canary_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = true
modules = [ "amd" ]
sound_null_safety = true
}
ddc_compile("expect_canary_ddc_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = true
modules = [ "ddc" ]
sound_null_safety = true
}
@ -400,6 +452,10 @@ ddc_compile("expect_stable_unsound_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = false
}
@ -407,6 +463,15 @@ ddc_compile("expect_canary_unsound_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = true
modules = [ "amd" ]
sound_null_safety = false
}
ddc_compile("expect_canary_unsound_ddc_js") {
package = "expect"
extra_libraries = [ "minitest" ]
canary = true
modules = [ "ddc" ]
sound_null_safety = false
}
@ -426,6 +491,10 @@ ddc_compile("js_stable_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = true
}
@ -433,12 +502,26 @@ ddc_compile("js_canary_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = true
modules = [ "amd" ]
sound_null_safety = true
}
ddc_compile("js_canary_ddc_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = true
modules = [ "ddc" ]
sound_null_safety = true
}
ddc_compile("js_stable_unsound_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = false
}
@ -446,6 +529,15 @@ ddc_compile("js_canary_unsound_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = true
modules = [ "amd" ]
sound_null_safety = false
}
ddc_compile("js_canary_unsound_ddc_js") {
package = "js"
extra_libraries = [ "js_util" ]
canary = true
modules = [ "ddc" ]
sound_null_safety = false
}
@ -462,24 +554,48 @@ package_kernel_outline("meta_outline_unsound") {
ddc_compile("meta_stable_js") {
package = "meta"
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = true
}
ddc_compile("meta_canary_js") {
package = "meta"
canary = true
modules = [ "amd" ]
sound_null_safety = true
}
ddc_compile("meta_canary_ddc_js") {
package = "meta"
canary = true
modules = [ "ddc" ]
sound_null_safety = true
}
ddc_compile("meta_stable_unsound_js") {
package = "meta"
canary = false
modules = [
"amd",
"ddc",
]
sound_null_safety = false
}
ddc_compile("meta_canary_unsound_js") {
package = "meta"
canary = true
modules = [ "amd" ]
sound_null_safety = false
}
ddc_compile("meta_canary_unsound_ddc_js") {
package = "meta"
canary = true
modules = [ "ddc" ]
sound_null_safety = false
}
@ -527,6 +643,8 @@ compile_ddc_platform("ddc_platform_unsound") {
template("ddc_compile_sdk") {
assert(defined(invoker.sound_null_safety),
"Need 'sound_null_safety' in $target_name.")
assert(defined(invoker.canary), "Need 'canary' in $target_name.")
assert(defined(invoker.modules), "Need 'modules' in $target_name.")
# Determine one of four possible directories for the JavaScript output to be
# generated:
@ -559,22 +677,28 @@ template("ddc_compile_sdk") {
inputs = [ platform_input ]
outputs = [
"$js_gen_dir/amd/dart_sdk.js",
"$js_gen_dir/amd/dart_sdk.js.map",
"$js_gen_dir/common/dart_sdk.js",
"$js_gen_dir/common/dart_sdk.js.map",
"$js_gen_dir/es6/dart_sdk.js",
"$js_gen_dir/es6/dart_sdk.js.map",
"$js_gen_dir/ddc/dart_sdk.js",
"$js_gen_dir/ddc/dart_sdk.js.map",
]
outputs = []
args = []
foreach(module, invoker.modules) {
outputs += [
"$js_gen_dir/$module/dart_sdk.js",
"$js_gen_dir/$module/dart_sdk.js.map",
]
args += [
"--modules",
"$module",
"-o",
rebase_path("$js_gen_dir/$module/dart_sdk.js"),
]
}
vm_args = [ "-Dsdk_hash=$sdk_hash" ]
script = "../../pkg/dev_compiler/bin/dartdevc.dart"
args = [
args += [
"--multi-root-scheme",
"org-dartlang-sdk",
"--multi-root-output-path",
@ -586,22 +710,6 @@ template("ddc_compile_sdk") {
# These JavaScript files and source maps are no longer packaged into the
# released SDK.
rebase_path("$target_gen_dir/../../../dart-sdk"),
"--modules",
"amd",
"-o",
rebase_path("$js_gen_dir/amd/dart_sdk.js"),
"--modules",
"common",
"-o",
rebase_path("$js_gen_dir/common/dart_sdk.js"),
"--modules",
"es6",
"-o",
rebase_path("$js_gen_dir/es6/dart_sdk.js"),
"--modules",
"ddc",
"-o",
rebase_path("$js_gen_dir/ddc/dart_sdk.js"),
rebase_path("$platform_input"),
]
@ -619,20 +727,66 @@ template("ddc_compile_sdk") {
ddc_compile_sdk("ddc_stable_sdk") {
canary = false
modules = [
"amd",
"common",
"es6",
"ddc",
]
sound_null_safety = true
}
ddc_compile_sdk("ddc_stable_unsound_sdk") {
canary = false
modules = [
"amd",
"common",
"es6",
"ddc",
]
sound_null_safety = false
}
ddc_compile_sdk("ddc_canary_sdk") {
canary = true
modules = [
"amd",
"common",
"es6",
]
sound_null_safety = true
}
# Compiles the DDC SDK JavaScript modules from the platform .dill file in the
# "ddc" module format only.
#
# This allows for them to be built individually (only passing one `--modules`
# flag value) so that when also passing the `--canary` flag it will trigger
# DDC to enable the option for the new library bundle format.
ddc_compile_sdk("ddc_canary_sdk_ddc_module") {
canary = true
modules = [ "ddc" ]
sound_null_safety = true
}
ddc_compile_sdk("ddc_canary_unsound_sdk") {
canary = true
modules = [
"amd",
"common",
"es6",
]
sound_null_safety = false
}
# Compiles the DDC SDK JavaScript modules from the platform .dill file in the
# "ddc" module format only.
#
# This allows for them to be built individually (only passing one `--modules`
# flag value) so that when also passing the `--canary` flag it will trigger
# DDC to enable the option for the new library bundle format.
ddc_compile_sdk("ddc_canary_unsound_sdk_ddc_module") {
canary = true
modules = [ "ddc" ]
sound_null_safety = false
}