Skip to content

Commit c549a73

Browse files
mkustermannCommit Queue
authored andcommitted
[deps] Roll dart-lang/native to new version
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 Change-Id: I78f0ece02c337b3b132f161fa7cc5e88db223b57 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/389500 Commit-Queue: Martin Kustermann <[email protected]> Reviewed-by: Moritz Sümmermann <[email protected]>
1 parent 817882c commit c549a73

File tree

10 files changed

+106
-50
lines changed

10 files changed

+106
-50
lines changed

DEPS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ vars = {
153153
"material_color_utilities_rev": "799b6ba2f3f1c28c67cc7e0b4f18e0c7d7f3c03e",
154154
"mockito_rev": "f72791d3dd5cb2acc4f5c7da065ffe70d2ad1e0b",
155155
# dart-native-interop-team@ is rolling breaking changes manually while the assets features are in experimental.
156-
"native_rev": "659511886501bcce638c3966590df04984909ef0", # disable tools/rev_sdk_deps.dart
156+
"native_rev": "51647776372aa9e1f839efb811aa959fe445c0cf", # disable tools/rev_sdk_deps.dart
157157
"package_config_rev": "bafff8e90be25e1985f7e3ee40ea1d22571a93e6",
158158
"pool_rev": "7bfc71b39742753a88688e56e55a828a2f5dc0bf",
159159
"protobuf_rev": "ccf104dbc36929c0f8708285d5f3a8fae206343e",

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

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import 'package:dartdev/src/utils.dart';
1313
import 'package:front_end/src/api_prototype/compiler_options.dart'
1414
show Verbosity;
1515
import 'package:native_assets_builder/native_assets_builder.dart';
16-
import 'package:native_assets_cli/native_assets_cli_internal.dart';
16+
import 'package:native_assets_cli/code_assets_builder.dart';
17+
import 'package:native_assets_cli/data_assets_builder.dart';
1718
import 'package:path/path.dart' as path;
1819
import 'package:vm/target_os.dart'; // For possible --target-os values.
1920

@@ -141,13 +142,25 @@ class BuildCommand extends DartdevCommand {
141142
dartExecutable: Uri.file(sdk.dart),
142143
logger: logger(verbose),
143144
);
145+
146+
final cCompilerConfig = getCCompilerConfig();
147+
144148
final buildResult = await nativeAssetsBuildRunner.build(
149+
configCreator: () => BuildConfigBuilder()
150+
..setupCodeConfig(
151+
linkModePreference: LinkModePreference.dynamic,
152+
targetArchitecture: target.architecture,
153+
targetMacOSVersion: targetMacOSVersion,
154+
cCompilerConfig: cCompilerConfig,
155+
),
156+
configValidator: (config) async => [
157+
...await validateDataAssetBuildConfig(config),
158+
...await validateCodeAssetBuildConfig(config),
159+
],
145160
workingDirectory: workingDirectory,
146-
target: target,
147-
linkModePreference: LinkModePreference.dynamic,
161+
targetOS: target.os,
148162
buildMode: BuildMode.release,
149163
includeParentEnvironment: true,
150-
targetMacOSVersion: targetMacOSVersion,
151164
linkingEnabled: true,
152165
supportedAssetTypes: [
153166
CodeAsset.type,
@@ -157,10 +170,10 @@ class BuildCommand extends DartdevCommand {
157170
...await validateCodeAssetBuildOutput(config, output),
158171
],
159172
applicationAssetValidator: (assets) async => [
160-
...await validateCodeAssetsInApplication(assets),
173+
...await validateCodeAssetInApplication(assets),
161174
],
162175
);
163-
if (!buildResult.success) {
176+
if (buildResult == null) {
164177
stderr.writeln('Native assets build failed.');
165178
return 255;
166179
}
@@ -192,15 +205,24 @@ class BuildCommand extends DartdevCommand {
192205

193206
// Start linking here.
194207
final linkResult = await nativeAssetsBuildRunner.link(
208+
configCreator: () => LinkConfigBuilder()
209+
..setupCodeConfig(
210+
targetArchitecture: target.architecture,
211+
linkModePreference: LinkModePreference.dynamic,
212+
targetMacOSVersion: targetMacOSVersion,
213+
cCompilerConfig: cCompilerConfig,
214+
),
215+
configValidator: (config) async => [
216+
...await validateDataAssetLinkConfig(config),
217+
...await validateCodeAssetLinkConfig(config),
218+
],
195219
resourceIdentifiers:
196220
recordUseEnabled ? Uri.file(recordedUsagesPath!) : null,
197221
workingDirectory: workingDirectory,
198-
target: target,
199-
linkModePreference: LinkModePreference.dynamic,
222+
targetOS: target.os,
200223
buildMode: BuildMode.release,
201224
includeParentEnvironment: true,
202225
buildResult: buildResult,
203-
targetMacOSVersion: targetMacOSVersion,
204226
supportedAssetTypes: [
205227
CodeAsset.type,
206228
],
@@ -209,11 +231,11 @@ class BuildCommand extends DartdevCommand {
209231
...await validateCodeAssetLinkOutput(config, output),
210232
],
211233
applicationAssetValidator: (assets) async => [
212-
...await validateCodeAssetsInApplication(assets),
234+
...await validateCodeAssetInApplication(assets),
213235
],
214236
);
215237

216-
if (!linkResult.success) {
238+
if (linkResult == null) {
217239
stderr.writeln('Native assets link failed.');
218240
return 255;
219241
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -552,8 +552,8 @@ Remove debugging information from the output and save it separately to the speci
552552
return 255;
553553
}
554554
} else {
555-
final (success, assets) = await compileNativeAssetsJit(verbose: verbose);
556-
if (!success) {
555+
final assets = await compileNativeAssetsJit(verbose: verbose);
556+
if (assets == null) {
557557
stderr.writeln('Native assets build failed.');
558558
return 255;
559559
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -375,15 +375,15 @@ class RunCommand extends DartdevCommand {
375375
}
376376
} else {
377377
final runPackageName = getPackageForCommand(mainCommand);
378-
final (success, assets) = await compileNativeAssetsJitYamlFile(
378+
final assetsYamlFileUri = await compileNativeAssetsJitYamlFile(
379379
verbose: verbose,
380380
runPackageName: runPackageName,
381381
);
382-
if (!success) {
382+
if (assetsYamlFileUri == null) {
383383
log.stderr('Error: Compiling native assets failed.');
384384
return errorExitCode;
385385
}
386-
nativeAssets = assets?.toFilePath();
386+
nativeAssets = assetsYamlFileUri.toFilePath();
387387
}
388388

389389
final String? residentCompilerInfoFileArg =

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ Run "${runner!.executableName} help" to see global options.''');
5151
return DartdevCommand.errorExitCode;
5252
}
5353
} else {
54-
final (success, assets) =
54+
final assetsYamlFileUri =
5555
await compileNativeAssetsJitYamlFile(verbose: verbose);
56-
if (!success) {
56+
if (assetsYamlFileUri == null) {
5757
log.stderr('Error: Compiling native assets failed.');
5858
return DartdevCommand.errorExitCode;
5959
}
60-
nativeAssets = assets?.toFilePath();
60+
nativeAssets = assetsYamlFileUri.toFilePath();
6161
}
6262

6363
try {

pkg/dartdev/lib/src/native_assets.dart

Lines changed: 58 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import 'package:dartdev/src/sdk.dart';
99
import 'package:dartdev/src/utils.dart';
1010
import 'package:logging/logging.dart';
1111
import 'package:native_assets_builder/native_assets_builder.dart';
12+
import 'package:native_assets_cli/code_assets_builder.dart';
13+
import 'package:native_assets_cli/data_assets_builder.dart';
1214
import 'package:native_assets_cli/native_assets_cli_internal.dart';
1315

1416
import 'core.dart';
@@ -17,7 +19,7 @@ import 'core.dart';
1719
///
1820
/// If provided, only native assets of all transitive dependencies of
1921
/// [runPackageName] are built.
20-
Future<(bool success, List<EncodedAsset> assets)> compileNativeAssetsJit({
22+
Future<List<EncodedAsset>?> compileNativeAssetsJit({
2123
required bool verbose,
2224
String? runPackageName,
2325
}) async {
@@ -32,10 +34,10 @@ Future<(bool success, List<EncodedAsset> assets)> compileNativeAssetsJit({
3234
// `getExecutableForCommand` later.
3335
final result = await Process.run(sdk.dart, ['pub', 'get']);
3436
if (result.exitCode != 0) {
35-
return (true, <EncodedAsset>[]);
37+
return null;
3638
}
3739
} else {
38-
return (true, <EncodedAsset>[]);
40+
return null;
3941
}
4042
}
4143
final nativeAssetsBuildRunner = NativeAssetsBuildRunner(
@@ -46,17 +48,26 @@ Future<(bool success, List<EncodedAsset> assets)> compileNativeAssetsJit({
4648
final target = Target.current;
4749
final targetMacOSVersion =
4850
target.os == OS.macOS ? minimumSupportedMacOSVersion : null;
51+
final cCompilerConfig = getCCompilerConfig();
4952
final buildResult = await nativeAssetsBuildRunner.build(
53+
configCreator: () => BuildConfigBuilder()
54+
..setupCodeConfig(
55+
targetArchitecture: target.architecture,
56+
// When running in JIT mode, only dynamic libraries are supported.
57+
linkModePreference: LinkModePreference.dynamic,
58+
targetMacOSVersion: targetMacOSVersion,
59+
cCompilerConfig: cCompilerConfig,
60+
),
61+
configValidator: (config) async => [
62+
...await validateCodeAssetBuildConfig(config),
63+
...await validateDataAssetBuildConfig(config),
64+
],
5065
workingDirectory: workingDirectory,
51-
// When running in JIT mode, only the host OS needs to be build.
52-
target: target,
53-
// When running in JIT mode, only dynamic libraries are supported.
54-
linkModePreference: LinkModePreference.dynamic,
66+
targetOS: target.os,
5567
// Dart has no concept of release vs debug, default to release.
5668
buildMode: BuildMode.release,
5769
includeParentEnvironment: true,
5870
runPackageName: runPackageName,
59-
targetMacOSVersion: targetMacOSVersion,
6071
linkingEnabled: false,
6172
supportedAssetTypes: [
6273
CodeAsset.type,
@@ -66,14 +77,11 @@ Future<(bool success, List<EncodedAsset> assets)> compileNativeAssetsJit({
6677
...await validateCodeAssetBuildOutput(config, output),
6778
],
6879
applicationAssetValidator: (assets) async => [
69-
...await validateCodeAssetsInApplication(assets),
80+
...await validateCodeAssetInApplication(assets),
7081
],
7182
);
72-
73-
return (
74-
buildResult.success,
75-
buildResult.encodedAssets,
76-
);
83+
if (buildResult == null) return null;
84+
return buildResult.encodedAssets;
7785
}
7886

7987
/// Compiles all native assets for host OS in JIT mode, and creates the
@@ -83,17 +91,15 @@ Future<(bool success, List<EncodedAsset> assets)> compileNativeAssetsJit({
8391
/// [runPackageName] are built.
8492
///
8593
/// Used in `dart run` and `dart test`.
86-
Future<(bool success, Uri? nativeAssetsYaml)> compileNativeAssetsJitYamlFile({
94+
Future<Uri?> compileNativeAssetsJitYamlFile({
8795
required bool verbose,
8896
String? runPackageName,
8997
}) async {
90-
final (success, assets) = await compileNativeAssetsJit(
98+
final assets = await compileNativeAssetsJit(
9199
verbose: verbose,
92100
runPackageName: runPackageName,
93101
);
94-
if (!success) {
95-
return (false, null);
96-
}
102+
if (assets == null) return null;
97103
final codeAssets = assets
98104
.where((e) => e.type == CodeAsset.type)
99105
.map(CodeAsset.fromEncoded)
@@ -118,7 +124,7 @@ Future<(bool success, Uri? nativeAssetsYaml)> compileNativeAssetsJitYamlFile({
118124
${kernelAssets.toNativeAssetsFile()}''';
119125
final assetFile = File(assetsUri.toFilePath());
120126
await assetFile.writeAsString(nativeAssetsYaml);
121-
return (true, assetsUri);
127+
return assetsUri;
122128
}
123129

124130
KernelAsset _targetLocation(CodeAsset asset) {
@@ -199,3 +205,35 @@ Logger logger(bool verbose) => Logger('')
199205
log.trace(record.message);
200206
}
201207
});
208+
209+
CCompilerConfig? getCCompilerConfig() {
210+
// Specifically for running our tests on Dart CI with the test runner, we
211+
// recognize specific variables to setup the C Compiler configuration.
212+
final env = Platform.environment;
213+
final cc = env['DART_HOOK_TESTING_C_COMPILER__CC'];
214+
final ar = env['DART_HOOK_TESTING_C_COMPILER__AR'];
215+
final ld = env['DART_HOOK_TESTING_C_COMPILER__LD'];
216+
final envScript = env['DART_HOOK_TESTING_C_COMPILER__ENV_SCRIPT'];
217+
final envScriptArgs =
218+
env['DART_HOOK_TESTING_C_COMPILER__ENV_SCRIPT_ARGUMENTS']
219+
?.split(' ')
220+
.map((arg) => arg.trim())
221+
.where((arg) => arg.isNotEmpty)
222+
.toList();
223+
final hasEnvScriptArgs = envScriptArgs != null && envScriptArgs.isNotEmpty;
224+
225+
if (cc != null ||
226+
ar != null ||
227+
ld != null ||
228+
envScript != null ||
229+
hasEnvScriptArgs) {
230+
return CCompilerConfig(
231+
archiver: ar != null ? Uri.file(ar) : null,
232+
compiler: cc != null ? Uri.file(cc) : null,
233+
envScript: envScript != null ? Uri.file(envScript) : null,
234+
envScriptArgs: hasEnvScriptArgs ? envScriptArgs : null,
235+
linker: ld != null ? Uri.file(ld) : null,
236+
);
237+
}
238+
return null;
239+
}

pkg/dartdev/test/native_assets/build_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import 'dart:io';
88

9-
import 'package:native_assets_cli/native_assets_cli_internal.dart';
9+
import 'package:native_assets_cli/code_assets_builder.dart';
1010
import 'package:test/test.dart';
1111

1212
import '../utils.dart';

pkg/dartdev/test/native_assets/compile_test.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,8 @@ void main(List<String> args) {
5555
logger: logger,
5656
expectExitCodeZero: false,
5757
);
58-
expect(
59-
result.stderr,
60-
contains(
61-
'Native assets build failed.',
62-
),
63-
);
58+
expect(result.stderr,
59+
contains('Building assets for package:native_add failed.'));
6460
expect(result.exitCode, 255);
6561
});
6662
});

pkg/record_use/test_data/drop_dylib_recording/hook/build.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:logging/logging.dart';
6-
import 'package:native_assets_cli/native_assets_cli.dart';
6+
import 'package:native_assets_cli/code_assets.dart';
77
import 'package:native_toolchain_c/native_toolchain_c.dart';
88

99
void main(List<String> arguments) async {

pkg/record_use/test_data/drop_dylib_recording/hook/link.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import 'dart:convert';
66
import 'dart:io';
77

8-
import 'package:native_assets_cli/native_assets_cli.dart';
8+
import 'package:native_assets_cli/code_assets.dart';
99
import 'package:record_use/record_use.dart';
1010

1111
final callIdAdd = const Identifier(
@@ -32,7 +32,7 @@ void main(List<String> arguments) async {
3232
final usages =
3333
RecordedUsages.fromJson(jsonDecode(string) as Map<String, dynamic>);
3434

35-
final codeAssets = config.codeAssets.all;
35+
final codeAssets = config.codeAssets;
3636
print('Received assets: ${codeAssets.map((a) => a.id).join(', ')}.');
3737

3838
final symbols = <String>{};

0 commit comments

Comments
 (0)