Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit cb16289

Browse files
author
Jonah Williams
authored
Revert "Remove flutter_kernel_sdk dart script (#10808)" (#10811)
1 parent 42afb1a commit cb16289

File tree

3 files changed

+147
-70
lines changed

3 files changed

+147
-70
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,7 @@ FILE: ../../../flutter/vulkan/vulkan_utilities.cc
10151015
FILE: ../../../flutter/vulkan/vulkan_utilities.h
10161016
FILE: ../../../flutter/vulkan/vulkan_window.cc
10171017
FILE: ../../../flutter/vulkan/vulkan_window.h
1018+
FILE: ../../../flutter/web_sdk/flutter_kernel_sdk.dart
10181019
FILE: ../../../flutter/web_sdk/libraries.json
10191020
FILE: ../../../flutter/web_sdk/sdk_rewriter.dart
10201021
----------------------------------------------------------------------------------------------------

web_sdk/BUILD.gn

Lines changed: 13 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import("//third_party/dart/build/dart/dart_action.gni")
66
import("//third_party/dart/utils/compile_platform.gni")
77

8-
sdk_libraries_json = "$root_out_dir/flutter_web_sdk/libraries.json"
98
sdk_dill = "$root_out_dir/flutter_web_sdk/kernel/flutter_ddc_sdk.dill"
9+
sdk_libraries_json = "$root_out_dir/flutter_web_sdk/libraries.json"
1010

1111
web_ui_sources =
1212
exec_script("//third_party/dart/tools/list_dart_files.py",
@@ -31,7 +31,6 @@ web_engine_sources += [ "$flutter_root/lib/web_ui/lib/src/engine.dart" ]
3131
group("web_sdk") {
3232
deps = [
3333
":flutter_dartdevc_kernel_sdk",
34-
":flutter_dartdevc_kernel_sdk_outline",
3534
":web_engine_sources",
3635
":web_ui_library",
3736
":web_ui_sources",
@@ -96,88 +95,32 @@ copy("web_ui_library") {
9695
]
9796
}
9897

99-
# Compile the DDC SDK's summary.
100-
prebuilt_dart_action("flutter_dartdevc_kernel_sdk_outline") {
98+
prebuilt_dart_action("flutter_dartdevc_kernel_sdk") {
10199
deps = [
102100
"//third_party/dart/pkg:pkg_files_stamp",
103101
"//third_party/dart/utils/dartdevc:dartdevc_files_stamp",
104102
"//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp",
105103
]
106104

107-
inputs = []
105+
inputs = [
106+
"//third_party/dart/pkg/dev_compiler/tool/kernel_sdk.dart",
107+
]
108108

109109
outputs = [
110110
sdk_dill,
111+
"$root_out_dir/flutter_web_sdk/lib/_internal/libraries.json",
112+
"$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js",
113+
"$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js.map",
111114
]
112115

113-
script = "//third_party/dart/utils/bazel/kernel_worker.dart"
114-
115-
args = [
116-
"--summary-only",
117-
"--target",
118-
"ddc",
119-
"--packages-file",
120-
"org-dartlang-sdk:/third_party/dart/.packages",
121-
"--multi-root-scheme",
122-
"org-dartlang-sdk",
123-
"--multi-root",
124-
"file://" + rebase_path("../../"),
125-
"--libraries-file",
126-
"org-dartlang-sdk:/$sdk_libraries_json",
127-
"--output",
128-
rebase_path(sdk_dill),
129-
"--source",
130-
"dart:core",
131-
132-
# Additional Flutter web dart libraries
133-
"--source",
134-
"dart:ui",
135-
"--source",
136-
"dart:_engine",
137-
]
138-
}
139-
140-
# Compiles the DDC SDK's JS code.
141-
prebuilt_dart_action("flutter_dartdevc_kernel_sdk") {
142-
deps = [
143-
"//third_party/dart/pkg:pkg_files_stamp",
144-
"//third_party/dart/utils/dartdevc:dartdevc_files_stamp",
145-
"//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp",
146-
]
147-
148-
inputs = []
149-
116+
script = "flutter_kernel_sdk.dart"
150117
packages = "//third_party/dart/.packages"
151118

152-
script = "//third_party/dart/pkg/dev_compiler/bin/dartdevc.dart"
153-
154-
outputs = [
155-
"$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js",
156-
"$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js.map",
157-
]
119+
output_path = rebase_path(sdk_dill)
120+
libraries_path = rebase_path(sdk_libraries_json)
158121

159122
args = [
160-
"-k",
161-
"--compile-sdk",
162-
"dart:core",
163-
164-
# Additional Flutter web dart libraries
165-
"dart:ui",
166-
"dart:_engine",
167-
"--no-summarize",
168-
"--packages",
169-
"org-dartlang-sdk:/third_party/dart/.packages",
170-
"--multi-root-scheme",
171-
"org-dartlang-sdk",
172-
"--multi-root",
173-
"file://" + rebase_path("../../"),
174-
"--multi-root-output-path",
175-
rebase_path("$root_out_dir/"),
176-
"--libraries-file",
177-
"org-dartlang-sdk:/$sdk_libraries_json",
178-
"--modules",
179-
"amd",
180-
"-o",
181-
rebase_path("$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js"),
123+
"--output=$output_path",
124+
"--libraries=$libraries_path",
182125
]
183126
}

web_sdk/flutter_kernel_sdk.dart

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
// These packages exist in the third_party/dart .package, but not locally
6+
// which confuses the analyzer.
7+
// ignore_for_file: uri_does_not_exist
8+
import 'dart:async';
9+
import 'dart:convert' show json;
10+
import 'dart:io';
11+
import 'package:args/args.dart' show ArgParser;
12+
import 'package:dev_compiler/src/compiler/module_builder.dart';
13+
import 'package:dev_compiler/src/compiler/shared_command.dart'
14+
show SharedCompilerOptions;
15+
import 'package:dev_compiler/src/kernel/target.dart';
16+
import 'package:dev_compiler/src/kernel/command.dart';
17+
import 'package:dev_compiler/src/kernel/compiler.dart';
18+
import 'package:front_end/src/api_unstable/ddc.dart'
19+
show
20+
CompilerOptions,
21+
kernelForComponent,
22+
DiagnosticMessage,
23+
printDiagnosticMessage,
24+
Severity;
25+
import 'package:kernel/kernel.dart';
26+
import 'package:kernel/target/targets.dart';
27+
import 'package:path/path.dart' as path;
28+
29+
// This script is forked from https://github.com/dart-lang/sdk/blob/master/pkg/dev_compiler/tool/kernel_sdk.dart
30+
// and produces the precompiled sdk for dartdevc. This has been modified to include a dart:ui target.
31+
Future main(List<String> args) async {
32+
var ddcPath = path.dirname(path.dirname(path.fromUri(Platform.script)));
33+
34+
// Parse flags.
35+
var parser = ArgParser()
36+
..addOption('output')
37+
..addOption('libraries',
38+
defaultsTo: path.join(ddcPath, '../../sdk/lib/libraries.json'));
39+
var parserOptions = parser.parse(args);
40+
var outputPath = parserOptions['output'] as String;
41+
if (outputPath == null) {
42+
var sdkRoot = path.absolute(path.dirname(path.dirname(ddcPath)));
43+
var buildDir = path.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out');
44+
var genDir = path.join(buildDir, 'ReleaseX64', 'gen', 'utils', 'dartdevc');
45+
outputPath = path.join(genDir, 'kernel', 'ddc_sdk.dill');
46+
}
47+
48+
var librarySpecPath = parserOptions['libraries'] as String;
49+
var packagesPath = path.join(ddcPath, '../third_party/dart/.packages');
50+
void onDiagnostic(DiagnosticMessage message) {
51+
printDiagnosticMessage(message, print);
52+
if (message.severity == Severity.error ||
53+
message.severity == Severity.internalProblem) {
54+
exitCode = 1;
55+
}
56+
}
57+
58+
var target = FlutterDevCompilerTarget();
59+
var options = CompilerOptions()
60+
..compileSdk = true
61+
// TODO(sigmund): remove this unnecessary option when possible.
62+
..sdkRoot = Uri.base
63+
..packagesFileUri = Uri.base.resolveUri(Uri.file(packagesPath))
64+
..librariesSpecificationUri = Uri.base.resolveUri(Uri.file(librarySpecPath))
65+
..target = target
66+
..onDiagnostic = onDiagnostic
67+
..environmentDefines = {};
68+
69+
var inputs = target.extraRequiredLibraries.map(Uri.parse).toList();
70+
var component = await kernelForComponent(inputs, options);
71+
72+
var outputDir = path.dirname(outputPath);
73+
await Directory(outputDir).create(recursive: true);
74+
await writeComponentToBinary(component, outputPath);
75+
76+
var jsModule = ProgramCompiler(
77+
component,
78+
target.hierarchy,
79+
SharedCompilerOptions(moduleName: 'dart_sdk'),
80+
{}).emitModule(component, [], [], {});
81+
var moduleFormats = {
82+
'amd': ModuleFormat.amd,
83+
};
84+
85+
for (var name in moduleFormats.keys) {
86+
var format = moduleFormats[name];
87+
var jsDir = path.join(outputDir, name);
88+
var jsPath = path.join(jsDir, 'dart_sdk.js');
89+
await Directory(jsDir).create();
90+
var jsCode = jsProgramToCode(jsModule, format);
91+
await File(jsPath).writeAsString(jsCode.code);
92+
await File('$jsPath.map').writeAsString(json.encode(jsCode.sourceMap));
93+
}
94+
}
95+
96+
class FlutterDevCompilerTarget extends DevCompilerTarget {
97+
FlutterDevCompilerTarget() : super(TargetFlags());
98+
99+
@override
100+
List<String> get extraRequiredLibraries => const [
101+
'dart:_runtime',
102+
'dart:_debugger',
103+
'dart:_foreign_helper',
104+
'dart:_interceptors',
105+
'dart:_internal',
106+
'dart:_isolate_helper',
107+
'dart:_js_helper',
108+
'dart:_js_mirrors',
109+
'dart:_js_primitives',
110+
'dart:_metadata',
111+
'dart:_native_typed_data',
112+
'dart:async',
113+
'dart:collection',
114+
'dart:convert',
115+
'dart:developer',
116+
'dart:io',
117+
'dart:isolate',
118+
'dart:js',
119+
'dart:js_util',
120+
'dart:math',
121+
'dart:mirrors',
122+
'dart:typed_data',
123+
'dart:indexed_db',
124+
'dart:html',
125+
'dart:html_common',
126+
'dart:svg',
127+
'dart:web_audio',
128+
'dart:web_gl',
129+
'dart:web_sql',
130+
'dart:ui',
131+
'dart:_engine',
132+
];
133+
}

0 commit comments

Comments
 (0)