Skip to content

Commit e1eade6

Browse files
dcharkesCommit Queue
authored andcommitted
[deps] Roll dart-lang/native
This CL refactors the native assets implementation in Dartdev: * It introduces a `DartNativeAssetsBuilder` that wraps all logic. * The code now explicitly searches for a package config, and invokes `pub get` if that file does not exist but a pubspec does. (For most `dartdev` commands, `pub get` was already running later implicitly.) * The code now explicitly searches for a `runPackageName` and skips building native assets if a package name cannot be found. Change-Id: Ib5562fc64c3a756c99fee2e2daa763eb6fb1e855 Cq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/404583 Commit-Queue: Daco Harkes <[email protected]> Reviewed-by: Hossein Yousefi <[email protected]> Reviewed-by: Ben Konyi <[email protected]>
1 parent eba7e49 commit e1eade6

File tree

8 files changed

+372
-331
lines changed

8 files changed

+372
-331
lines changed

DEPS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ vars = {
141141
"markdown_rev": "19aaded4300d24bedcbf52ade792b203ddf030b0",
142142
"material_color_utilities_rev": "799b6ba2f3f1c28c67cc7e0b4f18e0c7d7f3c03e",
143143
# dart-native-interop-team@ is rolling breaking changes manually while the assets features are in experimental.
144-
"native_rev": "d1d9aa5e62d239580b8bf17e36db6d47c308fc89", # disable tools/rev_sdk_deps.dart
144+
"native_rev": "3ed5d3d07246cd792693584c2c42216739a634b7", # disable tools/rev_sdk_deps.dart
145145
"protobuf_rev": "b7dd58cdbd879beee4c3fbf8ee80fce8e97bad26",
146146
"pub_rev": "710265bae23ad5860f33287fba10b5c369f19a93", # disable tools/rev_sdk_deps.dart
147147
"shelf_rev": "bf799519cda2898a7c5af06dcfdd5fe6443afd79",

pkg/dartdev/lib/src/commands/build.dart

Lines changed: 12 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@ import 'package:dartdev/src/commands/compile.dart';
1010
import 'package:dartdev/src/experiments.dart';
1111
import 'package:dartdev/src/native_assets_bundling.dart';
1212
import 'package:dartdev/src/sdk.dart';
13-
import 'package:dartdev/src/utils.dart';
14-
import 'package:file/local.dart';
1513
import 'package:front_end/src/api_prototype/compiler_options.dart'
1614
show Verbosity;
17-
import 'package:native_assets_builder/native_assets_builder.dart';
1815
import 'package:native_assets_cli/code_assets_builder.dart';
19-
import 'package:native_assets_cli/data_assets_builder.dart';
20-
import 'package:package_config/package_config.dart' as package_config;
2116
import 'package:path/path.dart' as path;
2217
import 'package:vm/target_os.dart'; // For possible --target-os values.
2318

@@ -132,61 +127,23 @@ class BuildCommand extends DartdevCommand {
132127
}
133128
await outputDir.create(recursive: true);
134129

135-
// Start native asset generation here.
136130
stdout.writeln('Building native assets.');
137-
final packageConfig = await findPackageConfigUri(sourceUri);
138-
final runPackageName = await findRootPackageName(sourceUri);
139-
final workingDirectory = Directory.current.uri;
140-
final packageLayout = PackageLayout.fromPackageConfig(
141-
LocalFileSystem(),
142-
await package_config.loadPackageConfigUri(packageConfig!),
143-
packageConfig,
131+
final packageConfig = await DartNativeAssetsBuilder.ensurePackageConfig(
132+
sourceUri,
144133
);
145-
final target = Target.current;
146-
final macOSConfig = target.os == OS.macOS
147-
? MacOSConfig(targetVersion: minimumSupportedMacOSVersion)
148-
: null;
149-
final nativeAssetsBuildRunner = NativeAssetsBuildRunner(
150-
fileSystem: const LocalFileSystem(),
151-
dartExecutable: Uri.file(sdk.dart),
152-
logger: logger(verbose),
134+
final runPackageName = await DartNativeAssetsBuilder.findRootPackageName(
135+
sourceUri,
153136
);
154-
155-
final cCompilerConfig = getCCompilerConfig();
156-
157-
final buildResult = await nativeAssetsBuildRunner.build(
158-
inputCreator: () => BuildInputBuilder()
159-
..config.setupCode(
160-
targetOS: target.os,
161-
linkModePreference: LinkModePreference.dynamic,
162-
targetArchitecture: target.architecture,
163-
macOS: macOSConfig,
164-
cCompiler: cCompilerConfig,
165-
),
166-
inputValidator: (config) async => [
167-
...await validateDataAssetBuildInput(config),
168-
...await validateCodeAssetBuildInput(config),
169-
],
170-
workingDirectory: workingDirectory,
171-
packageLayout: packageLayout,
172-
runPackageName: runPackageName,
173-
linkingEnabled: true,
174-
buildAssetTypes: [
175-
CodeAsset.type,
176-
],
177-
buildValidator: (config, output) async => [
178-
...await validateDataAssetBuildOutput(config, output),
179-
...await validateCodeAssetBuildOutput(config, output),
180-
],
181-
applicationAssetValidator: (assets) async => [
182-
...await validateCodeAssetInApplication(assets),
183-
],
137+
final builder = DartNativeAssetsBuilder(
138+
packageConfigUri: packageConfig!,
139+
runPackageName: runPackageName!,
140+
verbose: verbose,
184141
);
142+
final buildResult = await builder.buildNativeAssetsAOT();
185143
if (buildResult == null) {
186144
stderr.writeln('Native assets build failed.');
187145
return 255;
188146
}
189-
// End native asset generation here.
190147

191148
final tempDir = Directory.systemTemp.createTempSync();
192149
try {
@@ -211,38 +168,10 @@ class BuildCommand extends DartdevCommand {
211168
recordedUsagesFile: recordedUsagesPath,
212169
);
213170

214-
// Start linking here.
215-
final linkResult = await nativeAssetsBuildRunner.link(
216-
inputCreator: () => LinkInputBuilder()
217-
..config.setupCode(
218-
targetOS: target.os,
219-
targetArchitecture: target.architecture,
220-
linkModePreference: LinkModePreference.dynamic,
221-
macOS: macOSConfig,
222-
cCompiler: cCompilerConfig,
223-
),
224-
inputValidator: (config) async => [
225-
...await validateDataAssetLinkInput(config),
226-
...await validateCodeAssetLinkInput(config),
227-
],
228-
resourceIdentifiers:
229-
recordUseEnabled ? Uri.file(recordedUsagesPath!) : null,
230-
workingDirectory: workingDirectory,
231-
runPackageName: runPackageName,
232-
packageLayout: packageLayout,
171+
final linkResult = await builder.linkNativeAssetsAOT(
172+
recordedUsagesPath: recordedUsagesPath,
233173
buildResult: buildResult,
234-
buildAssetTypes: [
235-
CodeAsset.type,
236-
],
237-
linkValidator: (config, output) async => [
238-
...await validateDataAssetLinkOutput(config, output),
239-
...await validateCodeAssetLinkOutput(config, output),
240-
],
241-
applicationAssetValidator: (assets) async => [
242-
...await validateCodeAssetInApplication(assets),
243-
],
244174
);
245-
246175
if (linkResult == null) {
247176
stderr.writeln('Native assets link failed.');
248177
return 255;
@@ -265,7 +194,7 @@ Use linkMode as dynamic library instead.""");
265194
if (allAssets.isNotEmpty) {
266195
final kernelAssets = await bundleNativeAssets(
267196
allAssets,
268-
target,
197+
builder.target,
269198
outputUri,
270199
relocatable: true,
271200
verbose: true,

pkg/dartdev/lib/src/commands/compile.dart

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -558,23 +558,35 @@ Remove debugging information from the output and save it separately to the speci
558558
return compileErrorExitCode;
559559
}
560560

561-
if (!nativeAssetsExperimentEnabled) {
562-
if (await warnOnNativeAssets()) {
563-
return 255;
564-
}
565-
} else {
566-
final assets = await compileNativeAssetsJit(
567-
verbose: verbose,
568-
runPackageName: await findRootPackageName(Directory.current.uri),
561+
final packageConfig = await DartNativeAssetsBuilder.ensurePackageConfig(
562+
Directory.current.uri,
563+
);
564+
if (packageConfig != null) {
565+
final runPackageName = await DartNativeAssetsBuilder.findRootPackageName(
566+
Directory.current.uri,
569567
);
570-
if (assets == null) {
571-
stderr.writeln('Native assets build failed.');
572-
return 255;
573-
}
574-
if (assets.isNotEmpty) {
575-
stderr.writeln(
576-
"'dart compile' does currently not support native assets.");
577-
return 255;
568+
if (runPackageName != null) {
569+
final builder = DartNativeAssetsBuilder(
570+
packageConfigUri: packageConfig,
571+
runPackageName: runPackageName,
572+
verbose: verbose,
573+
);
574+
if (!nativeAssetsExperimentEnabled) {
575+
if (await builder.warnOnNativeAssets()) {
576+
return 255;
577+
}
578+
} else {
579+
final assets = await builder.compileNativeAssetsJit();
580+
if (assets == null) {
581+
stderr.writeln('Native assets build failed.');
582+
return 255;
583+
}
584+
if (assets.isNotEmpty) {
585+
stderr.writeln(
586+
"'dart compile' does currently not support native assets.");
587+
return 255;
588+
}
589+
}
578590
}
579591
}
580592

pkg/dartdev/lib/src/commands/language_server.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ For more information about the server's capabilities and configuration, see:
5252
sdk.analysisServerSnapshot,
5353
args,
5454
packageConfigOverride: null,
55-
useExecProcess : false,
55+
useExecProcess: false,
5656
);
5757
return 0;
5858
} catch (e, st) {

pkg/dartdev/lib/src/commands/run.dart

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -371,22 +371,34 @@ class RunCommand extends DartdevCommand {
371371
}
372372

373373
String? nativeAssets;
374-
if (!nativeAssetsExperimentEnabled) {
375-
if (await warnOnNativeAssets()) {
376-
return errorExitCode;
377-
}
378-
} else {
374+
final packageConfig = await DartNativeAssetsBuilder.ensurePackageConfig(
375+
Directory.current.uri,
376+
);
377+
if (packageConfig != null) {
379378
final runPackageName = getPackageForCommand(mainCommand) ??
380-
await findRootPackageName(Directory.current.uri);
381-
final assetsYamlFileUri = await compileNativeAssetsJitYamlFile(
382-
verbose: verbose,
383-
runPackageName: runPackageName,
384-
);
385-
if (assetsYamlFileUri == null) {
386-
log.stderr('Error: Compiling native assets failed.');
387-
return errorExitCode;
379+
await DartNativeAssetsBuilder.findRootPackageName(
380+
Directory.current.uri,
381+
);
382+
if (runPackageName != null) {
383+
final builder = DartNativeAssetsBuilder(
384+
packageConfigUri: packageConfig,
385+
runPackageName: runPackageName,
386+
verbose: verbose,
387+
);
388+
if (!nativeAssetsExperimentEnabled) {
389+
if (await builder.warnOnNativeAssets()) {
390+
return errorExitCode;
391+
}
392+
} else {
393+
final assetsYamlFileUri =
394+
await builder.compileNativeAssetsJitYamlFile();
395+
if (assetsYamlFileUri == null) {
396+
log.stderr('Error: Compiling native assets failed.');
397+
return errorExitCode;
398+
}
399+
nativeAssets = assetsYamlFileUri.toFilePath();
400+
}
388401
}
389-
nativeAssets = assetsYamlFileUri.toFilePath();
390402
}
391403

392404
final String? residentCompilerInfoFileArg =

pkg/dartdev/lib/src/commands/test.dart

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,21 +47,33 @@ Run "${runner!.executableName} help" to see global options.''');
4747
final args = argResults!;
4848

4949
String? nativeAssets;
50-
if (!nativeAssetsExperimentEnabled) {
51-
if (await warnOnNativeAssets()) {
52-
return DartdevCommand.errorExitCode;
53-
}
54-
} else {
55-
final assetsYamlFileUri =
56-
await compileNativeAssetsJitYamlFile(
57-
verbose: verbose,
58-
runPackageName: await findRootPackageName(Directory.current.uri),
50+
final packageConfig = await DartNativeAssetsBuilder.ensurePackageConfig(
51+
Directory.current.uri,
52+
);
53+
if (packageConfig != null) {
54+
final runPackageName = await DartNativeAssetsBuilder.findRootPackageName(
55+
Directory.current.uri,
5956
);
60-
if (assetsYamlFileUri == null) {
61-
log.stderr('Error: Compiling native assets failed.');
62-
return DartdevCommand.errorExitCode;
57+
if (runPackageName != null) {
58+
final builder = DartNativeAssetsBuilder(
59+
packageConfigUri: packageConfig,
60+
runPackageName: runPackageName,
61+
verbose: verbose,
62+
);
63+
if (!nativeAssetsExperimentEnabled) {
64+
if (await builder.warnOnNativeAssets()) {
65+
return DartdevCommand.errorExitCode;
66+
}
67+
} else {
68+
final assetsYamlFileUri =
69+
await builder.compileNativeAssetsJitYamlFile();
70+
if (assetsYamlFileUri == null) {
71+
log.stderr('Error: Compiling native assets failed.');
72+
return DartdevCommand.errorExitCode;
73+
}
74+
nativeAssets = assetsYamlFileUri.toFilePath();
75+
}
6376
}
64-
nativeAssets = assetsYamlFileUri.toFilePath();
6577
}
6678

6779
try {

0 commit comments

Comments
 (0)