Skip to content

Commit 3e5ae0d

Browse files
dcharkesHosseinYousefi
authored andcommitted
[native_assets_builder] build.dart -> hook/build.dart (#1018)
* #823 Notes: * Should keep existing toplevel `build.dart` scripts working by trying both `hook/build.dart` and `build.dart`. * Does not migrate the examples yet, so that we don't have to do `breaking-change` is true in the ci. * Will do this after rolling into Dart. * `native_toolchain_c` had a `this.dartBuildFiles = const ['build.dart'],`. Updating that to `hook/build.dart` would not work for unmigrated scripts, because files listed as dependencies that don't exist will also trigger a rebuild, e.g. it is considered deleting a file. It would also break on any kind of invocation from `hook/link.dart`. So, I've removed the default value for now. It's not pretty though. Ideas @mosuem?
1 parent d767fe8 commit 3e5ae0d

File tree

43 files changed

+114
-44
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+114
-44
lines changed

pkgs/native_assets_builder/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
## 0.6.0-wip
22

33
- **Breaking change** Completely rewritten API in `native_assets_cli`.
4+
- **Breaking change** Move `build.dart` to `hook/build.dart`.
5+
https://github.com/dart-lang/native/issues/823
6+
(Backwards compatibility, fallback to toplevel `build.dart`.)
47

58
## 0.5.0
69

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,8 @@ class NativeAssetsBuildRunner {
259259
}) async {
260260
final outDir = config.outputDirectory;
261261
final configFile = outDir.resolve('../config.yaml');
262-
final buildDotDart = config.packageRoot.resolve('build.dart');
262+
final buildHook = config.packageRoot.resolve('hook/').resolve('build.dart');
263+
final buildHookLegacy = config.packageRoot.resolve('build.dart');
263264
final configFileContents = config.toYamlString();
264265
logger.info('config.yaml contents: $configFileContents');
265266
await File.fromUri(configFile).writeAsString(configFileContents);
@@ -269,9 +270,13 @@ class NativeAssetsBuildRunner {
269270
// Ensure we'll never read outdated build results.
270271
await buildOutputFile.delete();
271272
}
273+
272274
final arguments = [
273275
'--packages=${packageConfigUri.toFilePath()}',
274-
buildDotDart.toFilePath(),
276+
if (await File.fromUri(buildHook).exists())
277+
buildHook.toFilePath()
278+
else
279+
buildHookLegacy.toFilePath(),
275280
'--config=${configFile.toFilePath()}',
276281
];
277282
final result = await runProcess(

pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,23 @@ class PackageLayout {
8686
/// All packages in [packageConfig] with native assets.
8787
///
8888
/// Whether a package has native assets is defined by whether it contains
89-
/// a `build.dart`.
89+
/// a `hook/build.dart`.
9090
///
91-
/// `package:native` itself is excluded.
91+
/// For backwards compatibility, a toplevel `build.dart` is also supported.
92+
// TODO(https://github.com/dart-lang/native/issues/823): Remove fallback when
93+
// everyone has migrated. (Probably once we stop backwards compatibility of
94+
// the protocol version pre 1.2.0 on some future version.)
9295
late final Future<List<Package>> packagesWithNativeAssets = () async {
9396
final result = <Package>[];
9497
for (final package in packageConfig.packages) {
9598
final packageRoot = package.root;
9699
if (packageRoot.scheme == 'file') {
97-
if (await File.fromUri(packageRoot.resolve('build.dart')).exists()) {
100+
if (await File.fromUri(
101+
packageRoot.resolve('hook/').resolve('build.dart'),
102+
).exists() ||
103+
await File.fromUri(
104+
packageRoot.resolve('build.dart'),
105+
).exists()) {
98106
result.add(package);
99107
}
100108
}

pkgs/native_assets_builder/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: native_assets_builder
22
description: >-
3-
This package is the backend that invokes top-level `build.dart` scripts.
3+
This package is the backend that invokes `build.dart` hooks.
44
version: 0.6.0-wip
55
repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder
66

pkgs/native_assets_builder/test/build_runner/build_dependencies_test.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,20 @@ void main() async {
3232
logMessages.join('\n'),
3333
stringContainsInOrder(
3434
[
35-
'native_add${Platform.pathSeparator}build.dart',
36-
'native_subtract${Platform.pathSeparator}build.dart'
35+
'native_add${Platform.pathSeparator}hook'
36+
'${Platform.pathSeparator}build.dart',
37+
'native_subtract${Platform.pathSeparator}hook'
38+
'${Platform.pathSeparator}build.dart',
3739
],
3840
),
3941
);
4042
expect(result.assets.length, 2);
4143
expect(
4244
result.dependencies,
4345
[
44-
tempUri.resolve('native_add/').resolve('build.dart'),
46+
tempUri.resolve('native_add/').resolve('hook/build.dart'),
4547
tempUri.resolve('native_add/').resolve('src/native_add.c'),
46-
tempUri.resolve('native_subtract/').resolve('build.dart'),
48+
tempUri.resolve('native_subtract/').resolve('hook/build.dart'),
4749
tempUri
4850
.resolve('native_subtract/')
4951
.resolve('src/native_subtract.c'),

pkgs/native_assets_builder/test/build_runner/build_runner_caching_test.dart

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,15 @@ void main() async {
2929
capturedLogs: logMessages);
3030
expect(
3131
logMessages.join('\n'),
32-
contains('native_add${Platform.pathSeparator}build.dart'),
32+
contains(
33+
'native_add${Platform.pathSeparator}hook'
34+
'${Platform.pathSeparator}build.dart',
35+
),
3336
);
3437
expect(
3538
result.dependencies,
3639
[
37-
packageUri.resolve('build.dart'),
40+
packageUri.resolve('hook/build.dart'),
3841
packageUri.resolve('src/native_add.c'),
3942
],
4043
);
@@ -50,12 +53,15 @@ void main() async {
5053
);
5154
expect(
5255
logMessages.join('\n'),
53-
isNot(contains('native_add${Platform.pathSeparator}build.dart')),
56+
isNot(contains(
57+
'native_add${Platform.pathSeparator}hook'
58+
'${Platform.pathSeparator}build.dart',
59+
)),
5460
);
5561
expect(
5662
result.dependencies,
5763
[
58-
packageUri.resolve('build.dart'),
64+
packageUri.resolve('hook/build.dart'),
5965
packageUri.resolve('src/native_add.c'),
6066
],
6167
);

pkgs/native_assets_builder/test/build_runner/build_runner_failure_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void main() async {
3333
expect(
3434
result.dependencies,
3535
[
36-
packageUri.resolve('build.dart'),
36+
packageUri.resolve('hook/build.dart'),
3737
packageUri.resolve('src/native_add.c'),
3838
],
3939
);
@@ -78,7 +78,7 @@ void main() async {
7878
expect(
7979
result.dependencies,
8080
[
81-
packageUri.resolve('build.dart'),
81+
packageUri.resolve('hook/build.dart'),
8282
packageUri.resolve('src/native_add.c'),
8383
],
8484
);

pkgs/native_assets_builder/test/build_runner/build_runner_non_root_package_test.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,16 @@ void main() async {
4848
expect(
4949
result.dependencies,
5050
[
51-
packageUri.resolve('build.dart'),
51+
packageUri.resolve('hook/build.dart'),
5252
packageUri.resolve('src/native_add.c'),
5353
],
5454
);
5555
expect(
5656
logMessages.join('\n'),
57-
contains('native_add${Platform.pathSeparator}build.dart'),
57+
contains(
58+
'native_add${Platform.pathSeparator}hook'
59+
'${Platform.pathSeparator}build.dart',
60+
),
5861
);
5962
}
6063
});

pkgs/native_assets_builder/test/build_runner/build_runner_test.dart

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ void main() async {
3131
capturedLogs: logMessages);
3232
expect(
3333
logMessages.join('\n'),
34-
stringContainsInOrder(
35-
['native_add${Platform.pathSeparator}build.dart']));
34+
stringContainsInOrder([
35+
'native_add${Platform.pathSeparator}hook'
36+
'${Platform.pathSeparator}build.dart',
37+
]));
3638
expect(result.assets.length, 1);
3739
}
3840

@@ -52,9 +54,10 @@ void main() async {
5254
);
5355
expect(
5456
false,
55-
logMessages
56-
.join('\n')
57-
.contains('native_add${Platform.pathSeparator}build.dart'),
57+
logMessages.join('\n').contains(
58+
'native_add${Platform.pathSeparator}hook'
59+
'${Platform.pathSeparator}build.dart',
60+
),
5861
);
5962
expect(result.assets.length, 1);
6063
}

pkgs/native_assets_builder/test/build_runner/metadata_test.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ void main() async {
3131
expect(
3232
logMessages.join('\n'),
3333
stringContainsInOrder([
34-
'package_with_metadata${Platform.pathSeparator}build.dart',
35-
'package_reading_metadata${Platform.pathSeparator}build.dart',
34+
'package_with_metadata${Platform.pathSeparator}hook'
35+
'${Platform.pathSeparator}build.dart',
36+
'package_reading_metadata${Platform.pathSeparator}hook'
37+
'${Platform.pathSeparator}build.dart',
3638
'{some_int: 3, some_key: some_value}',
3739
]));
3840
}
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,39 @@
11
# The list of files to copy to a temporary folder to ensure running tests from
22
# a completely clean setup.
3-
- cyclic_package_1/build.dart
3+
- cyclic_package_1/hook/build.dart
44
- cyclic_package_1/pubspec.yaml
5-
- cyclic_package_2/build.dart
5+
- cyclic_package_2/hook/build.dart
66
- cyclic_package_2/pubspec.yaml
77
- dart_app/bin/dart_app.dart
88
- dart_app/pubspec.yaml
9-
- native_add/build.dart
109
- native_add/ffigen.yaml
10+
- native_add/hook/build.dart
1111
- native_add/lib/native_add.dart
1212
- native_add/lib/src/native_add_bindings_generated.dart
1313
- native_add/lib/src/native_add.dart
1414
- native_add/pubspec.yaml
1515
- native_add/src/native_add.c
1616
- native_add/src/native_add.h
1717
- native_add/test/native_add_test.dart
18-
- native_subtract/build.dart
1918
- native_subtract/ffigen.yaml
19+
- native_subtract/hook/build.dart
2020
- native_subtract/lib/native_subtract.dart
2121
- native_subtract/lib/src/native_subtract_bindings_generated.dart
2222
- native_subtract/lib/src/native_subtract.dart
2323
- native_subtract/pubspec.yaml
2424
- native_subtract/src/native_subtract.c
2525
- native_subtract/src/native_subtract.h
26-
- package_reading_metadata/build.dart
26+
- package_reading_metadata/hook/build.dart
2727
- package_reading_metadata/pubspec.yaml
28-
- package_with_metadata/build.dart
28+
- package_with_metadata/hook/build.dart
2929
- package_with_metadata/pubspec.yaml
3030
- some_dev_dep/bin/some_dev_dep.dart
3131
- some_dev_dep/pubspec.yaml
32-
- wrong_build_output/build.dart
33-
- wrong_build_output/pubspec.yaml
34-
- wrong_build_output_2/build.dart
32+
- wrong_build_output_2/hook/build.dart
3533
- wrong_build_output_2/pubspec.yaml
36-
- wrong_build_output_3/build.dart
34+
- wrong_build_output_3/hook/build.dart
3735
- wrong_build_output_3/pubspec.yaml
38-
- wrong_namespace_asset/build.dart
36+
- wrong_build_output/hook/build.dart
37+
- wrong_build_output/pubspec.yaml
38+
- wrong_namespace_asset/hook/build.dart
3939
- wrong_namespace_asset/pubspec.yaml

pkgs/native_assets_builder/test_data/native_add/build.dart renamed to pkgs/native_assets_builder/test_data/native_add/hook/build.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ void main(List<String> arguments) async {
1616
sources: [
1717
'src/$packageName.c',
1818
],
19+
dartBuildFiles: ['hook/build.dart'],
1920
);
2021
await cbuilder.run(
2122
buildConfig: config,

pkgs/native_assets_builder/test_data/native_add/manifest.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
- build.dart
21
- ffigen.yaml
2+
- hook/build.dart
33
- lib/native_add.dart
44
- lib/src/native_add_bindings_generated.dart
55
- lib/src/native_add.dart

pkgs/native_assets_builder/test_data/native_add_add_source/build.dart renamed to pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ void main(List<String> arguments) async {
1717
'src/$packageName.c',
1818
'src/native_multiply.c',
1919
],
20+
dartBuildFiles: ['hook/build.dart'],
2021
);
2122
await cbuilder.run(
2223
buildConfig: config,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
- build.dart
1+
- hook/build.dart
22
- src/native_multiply.c
33
- src/native_multiply.h

pkgs/native_assets_builder/test_data/native_subtract/build.dart renamed to pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ void main(List<String> arguments) async {
1616
sources: [
1717
'src/$packageName.c',
1818
],
19+
dartBuildFiles: ['hook/build.dart'],
1920
);
2021
await cbuilder.run(
2122
buildConfig: config,

pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: package_reading_metadata
2-
description: Reads some metadata in its build.dart
2+
description: Reads some metadata in its hook/build.dart
33
version: 0.1.0
44

55
publish_to: none

pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: package_with_metadata
2-
description: Sets some metadata in its build.dart
2+
description: Sets some metadata in its hook/build.dart
33
version: 0.1.0
44

55
publish_to: none

pkgs/native_assets_cli/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
- **Breaking change** Completely rewritten API.
44
https://github.com/dart-lang/native/pull/946
5+
- **Breaking change** Move `build.dart` to `hook/build.dart`.
6+
https://github.com/dart-lang/native/issues/823
57
- Bump examples dependencies to path dependencies.
68

79
## 0.4.2

pkgs/native_assets_cli/example/local_asset/build.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ void main(List<String> args) async {
2727

2828
output.addDependencies([
2929
assetSourcePath,
30+
// TODO(https://github.com/dart-lang/native/issues/823): Update after
31+
// change is rolled into Dart SDK.
3032
config.packageRoot.resolve('build.dart'),
3133
]);
3234
}

pkgs/native_assets_cli/example/native_add_library/build.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ void main(List<String> args) async {
1515
sources: [
1616
'src/$packageName.c',
1717
],
18+
// TODO(https://github.com/dart-lang/native/issues/823): Update after
19+
// change is rolled into Dart SDK.
20+
dartBuildFiles: ['build.dart'],
1821
);
1922
await cbuilder.run(
2023
buildConfig: config,

pkgs/native_assets_cli/example/use_dart_api/build.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ void main(List<String> arguments) async {
1717
'src/$packageName.c',
1818
'src/dart_api_dl.c',
1919
],
20+
// TODO(https://github.com/dart-lang/native/issues/823): Update after
21+
// change is rolled into Dart SDK.
22+
dartBuildFiles: ['build.dart'],
2023
);
2124
await cbuilder.run(
2225
buildConfig: config,

pkgs/native_assets_cli/example/use_dart_api/manifest.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
- build.dart
1+
- hook/build.dart
22
- ffigen.yaml
33
- lib/native_add.dart
44
- lib/src/native_add_bindings_generated.dart

pkgs/native_assets_cli/lib/src/api/build.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import 'build_output.dart';
2626
/// sources: [
2727
/// 'src/$packageName.c',
2828
/// ],
29+
/// dartBuildFiles: ['hook/build.dart'],
2930
/// );
3031
/// await cbuilder.run(
3132
/// buildConfig: config,
@@ -66,7 +67,7 @@ import 'build_output.dart';
6667
///
6768
/// output.addDependencies([
6869
/// assetSourcePath,
69-
/// config.packageRoot.resolve('build.dart'),
70+
/// config.packageRoot.resolve('hook/build.dart'),
7071
/// ]);
7172
/// }
7273
///

pkgs/native_assets_cli/test/example/local_asset_test.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ void main() async {
3838
final processResult = await Process.run(
3939
dartUri.toFilePath(),
4040
[
41+
// TODO(https://github.com/dart-lang/native/issues/823): Update after
42+
// change is rolled into Dart SDK.
4143
'build.dart',
4244
'-Dout_dir=${tempUri.toFilePath()}',
4345
'-Dpackage_name=$name',
@@ -83,6 +85,8 @@ void main() async {
8385
dependencies,
8486
[
8587
testPackageUri.resolve('data/asset.txt'),
88+
// TODO(https://github.com/dart-lang/native/issues/823): Update after
89+
// change is rolled into Dart SDK.
8690
testPackageUri.resolve('build.dart'),
8791
],
8892
);

0 commit comments

Comments
 (0)