Skip to content

Commit 81dd2b4

Browse files
authored
[native_assets_cli] BuildConfig.linkingEnabled (#1273)
1 parent 1e0e9db commit 81dd2b4

40 files changed

+250
-25
lines changed

pkgs/native_assets_builder/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
## 0.7.2-wip
1+
## 0.8.0-wip
22

3-
- Nothing yet.
3+
- `BuildRunner.build` and `BuildRunner.buildDryRun` now have a required
4+
`linkingEnabled` parameter.
45

56
## 0.7.1
67

pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class NativeAssetsBuildRunner {
5454
PackageLayout? packageLayout,
5555
String? runPackageName,
5656
Iterable<String>? supportedAssetTypes,
57+
required bool linkingEnabled,
5758
}) async =>
5859
_run(
5960
hook: Hook.build,
@@ -70,6 +71,7 @@ class NativeAssetsBuildRunner {
7071
packageLayout: packageLayout,
7172
runPackageName: runPackageName,
7273
supportedAssetTypes: supportedAssetTypes,
74+
linkingEnabled: linkingEnabled,
7375
);
7476

7577
/// [workingDirectory] is expected to contain `.dart_tool`.
@@ -133,8 +135,10 @@ class NativeAssetsBuildRunner {
133135
String? runPackageName,
134136
Iterable<String>? supportedAssetTypes,
135137
BuildResult? buildResult,
138+
bool? linkingEnabled,
136139
}) async {
137140
assert(hook == Hook.link || buildResult == null);
141+
assert(hook == Hook.build || linkingEnabled == null);
138142

139143
packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory);
140144
final (buildPlan, packageGraph, planSuccess) = await _makePlan(
@@ -168,6 +172,7 @@ class NativeAssetsBuildRunner {
168172
buildMode,
169173
linkModePreference,
170174
dependencyMetadata,
175+
linkingEnabled,
171176
cCompilerConfig,
172177
targetIOSSdk,
173178
targetAndroidNdkApi,
@@ -201,6 +206,7 @@ class NativeAssetsBuildRunner {
201206
BuildModeImpl buildMode,
202207
LinkModePreferenceImpl linkModePreference,
203208
DependencyMetadata? dependencyMetadata,
209+
bool? linkingEnabled,
204210
CCompilerConfigImpl? cCompilerConfig,
205211
IOSSdkImpl? targetIOSSdk,
206212
int? targetAndroidNdkApi,
@@ -224,6 +230,7 @@ class NativeAssetsBuildRunner {
224230
targetAndroidNdkApi: targetAndroidNdkApi,
225231
supportedAssetTypes: supportedAssetTypes,
226232
hook: hook,
233+
linkingEnabled: linkingEnabled,
227234
);
228235
final buildDirUri =
229236
packageLayout.dartToolNativeAssetsBuilder.resolve('$buildDirName/');
@@ -273,6 +280,7 @@ class NativeAssetsBuildRunner {
273280
targetMacOSVersion: targetMacOSVersion,
274281
cCompiler: cCompilerConfig,
275282
dependencyMetadata: dependencyMetadata,
283+
linkingEnabled: linkingEnabled,
276284
targetAndroidNdkApi: targetAndroidNdkApi,
277285
);
278286
}
@@ -290,6 +298,7 @@ class NativeAssetsBuildRunner {
290298
required OSImpl targetOS,
291299
required Uri workingDirectory,
292300
required bool includeParentEnvironment,
301+
required bool linkingEnabled,
293302
PackageLayout? packageLayout,
294303
String? runPackageName,
295304
Iterable<String>? supportedAssetTypes,
@@ -303,6 +312,7 @@ class NativeAssetsBuildRunner {
303312
packageLayout: packageLayout,
304313
runPackageName: runPackageName,
305314
supportedAssetTypes: supportedAssetTypes,
315+
linkingEnabled: linkingEnabled,
306316
);
307317

308318
/// [workingDirectory] is expected to contain `.dart_tool`.
@@ -332,6 +342,7 @@ class NativeAssetsBuildRunner {
332342
runPackageName: runPackageName,
333343
supportedAssetTypes: supportedAssetTypes,
334344
buildDryRunResult: buildDryRunResult,
345+
linkingEnabled: null,
335346
);
336347

337348
Future<HookResult> _runDryRun({
@@ -344,6 +355,7 @@ class NativeAssetsBuildRunner {
344355
Iterable<String>? supportedAssetTypes,
345356
required Hook hook,
346357
BuildDryRunResult? buildDryRunResult,
358+
required bool? linkingEnabled,
347359
}) async {
348360
packageLayout ??= await PackageLayout.fromRootPackageRoot(workingDirectory);
349361
final (buildPlan, _, planSuccess) = await _makePlan(
@@ -367,6 +379,7 @@ class NativeAssetsBuildRunner {
367379
supportedAssetTypes: supportedAssetTypes,
368380
hook: hook,
369381
buildDryRunResult: buildDryRunResult,
382+
linkingEnabled: linkingEnabled,
370383
);
371384
var (buildOutput, packageSuccess) = await _runHookForPackage(
372385
hook,
@@ -538,6 +551,7 @@ ${e.message}
538551
required Hook hook,
539552
BuildDryRunResult? buildDryRunResult,
540553
Iterable<String>? supportedAssetTypes,
554+
required bool? linkingEnabled,
541555
}) async {
542556
final hookDirName = 'dry_run_${hook.name}_${targetOS}_$linkMode';
543557
final outDirUri = buildParentDir.resolve('$hookDirName/out/');
@@ -554,6 +568,7 @@ ${e.message}
554568
targetOS: targetOS,
555569
linkModePreference: linkMode,
556570
supportedAssetTypes: supportedAssetTypes,
571+
linkingEnabled: linkingEnabled,
557572
);
558573
case Hook.link:
559574
return LinkConfigImpl.dryRun(

pkgs/native_assets_builder/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: native_assets_builder
22
description: >-
33
This package is the backend that invokes build hooks.
4-
version: 0.7.2-wip
4+
version: 0.8.0-wip
55
repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder
66

77
publish_to: none

pkgs/native_assets_builder/test/build_runner/build_runner_build_dry_run_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ void main() async {
2828
packageUri,
2929
logger,
3030
dartExecutable,
31+
linkingEnabled: false,
3132
);
3233
final dryRunAssets = dryRunResult.assets.toList();
3334
final result = await build(

pkgs/native_assets_builder/test/build_runner/build_runner_cycle_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ void main() async {
2626
packageUri,
2727
createCapturingLogger(logMessages, level: Level.SEVERE),
2828
dartExecutable,
29+
linkingEnabled: false,
2930
);
3031
final fullLog = logMessages.join('\n');
3132
expect(result.success, false);

pkgs/native_assets_builder/test/build_runner/build_runner_reusability_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,30 @@ void main() async {
3333
linkModePreference: LinkModePreferenceImpl.dynamic,
3434
workingDirectory: packageUri,
3535
includeParentEnvironment: true,
36+
linkingEnabled: false,
3637
);
3738
await buildRunner.buildDryRun(
3839
targetOS: Target.current.os,
3940
linkModePreference: LinkModePreferenceImpl.dynamic,
4041
workingDirectory: packageUri,
4142
includeParentEnvironment: true,
43+
linkingEnabled: false,
4244
);
4345
await buildRunner.build(
4446
buildMode: BuildModeImpl.release,
4547
linkModePreference: LinkModePreferenceImpl.dynamic,
4648
target: Target.current,
4749
workingDirectory: packageUri,
4850
includeParentEnvironment: true,
51+
linkingEnabled: false,
4952
);
5053
await buildRunner.build(
5154
buildMode: BuildModeImpl.release,
5255
linkModePreference: LinkModePreferenceImpl.dynamic,
5356
target: Target.current,
5457
workingDirectory: packageUri,
5558
includeParentEnvironment: true,
59+
linkingEnabled: false,
5660
);
5761
});
5862
});

pkgs/native_assets_builder/test/build_runner/helpers.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Future<BuildResult> build(
4646
int? targetMacOSVersion,
4747
int? targetAndroidNdkApi,
4848
Target? target,
49+
bool linkingEnabled = false,
4950
}) async =>
5051
await runWithLog(capturedLogs, () async {
5152
final result = await NativeAssetsBuildRunner(
@@ -64,6 +65,7 @@ Future<BuildResult> build(
6465
targetIOSVersion: targetIOSVersion,
6566
targetMacOSVersion: targetMacOSVersion,
6667
targetAndroidNdkApi: targetAndroidNdkApi,
68+
linkingEnabled: linkingEnabled,
6769
);
6870

6971
if (result.success) {
@@ -155,6 +157,7 @@ Future<(BuildResult, LinkResult)> buildAndLink(
155157
targetIOSVersion: targetIOSVersion,
156158
targetMacOSVersion: targetMacOSVersion,
157159
targetAndroidNdkApi: targetAndroidNdkApi,
160+
linkingEnabled: true,
158161
);
159162

160163
if (!buildResult.success) {
@@ -217,6 +220,7 @@ Future<BuildDryRunResult> buildDryRun(
217220
bool includeParentEnvironment = true,
218221
List<String>? capturedLogs,
219222
PackageLayout? packageLayout,
223+
required bool linkingEnabled,
220224
}) async =>
221225
runWithLog(capturedLogs, () async {
222226
final result = await NativeAssetsBuildRunner(
@@ -228,6 +232,7 @@ Future<BuildDryRunResult> buildDryRun(
228232
workingDirectory: packageUri,
229233
includeParentEnvironment: includeParentEnvironment,
230234
packageLayout: packageLayout,
235+
linkingEnabled: linkingEnabled,
231236
);
232237
return result;
233238
});

pkgs/native_assets_builder/test/build_runner/link_dry_run_test.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ void main() async {
3030
packageUri,
3131
logger,
3232
dartExecutable,
33+
linkingEnabled: true,
3334
);
3435
expect(buildResult.assets.length, 0);
3536

@@ -70,6 +71,7 @@ void main() async {
7071
packageUri,
7172
logger,
7273
dartExecutable,
74+
linkingEnabled: true,
7375
);
7476
expect(buildResult.success, true);
7577
expect(_getNames(buildResult.assets), orderedEquals(builtHelperAssets));

pkgs/native_assets_builder/test/build_runner/link_test.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ void main() async {
3030
packageUri,
3131
logger,
3232
dartExecutable,
33+
linkingEnabled: true,
3334
);
3435
expect(buildResult.assets.length, 0);
3536

@@ -40,6 +41,14 @@ void main() async {
4041
buildResult: buildResult,
4142
);
4243
expect(linkResult.assets.length, 2);
44+
45+
final buildNoLinkResult = await build(
46+
packageUri,
47+
logger,
48+
dartExecutable,
49+
linkingEnabled: false,
50+
);
51+
expect(buildNoLinkResult.assets.length, 4);
4352
});
4453
},
4554
);
@@ -70,6 +79,7 @@ void main() async {
7079
packageUri,
7180
logger,
7281
dartExecutable,
82+
linkingEnabled: true,
7383
);
7484
expect(buildResult.success, true);
7585
expect(_getNames(buildResult.assets), orderedEquals(builtHelperAssets));
@@ -106,6 +116,7 @@ void main() async {
106116
packageUri,
107117
logger,
108118
dartExecutable,
119+
linkingEnabled: true,
109120
);
110121
expect(buildResult.assets.length, 0);
111122
expect(buildResult.assetsForLinking.length, 0);

pkgs/native_assets_builder/test/build_runner/resources_test.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ void main() async {
3333
packageUri,
3434
logger,
3535
dartExecutable,
36+
linkingEnabled: true,
3637
);
3738

3839
Iterable<String> buildFiles() => Directory.fromUri(

0 commit comments

Comments
 (0)