From 561e01aae89fbf03ce6033472f52d70ffb3bfe73 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Fri, 15 Mar 2024 15:42:04 +0100 Subject: [PATCH 1/4] [native_assets_builder] Invoke `hook/build.dart` --- pkgs/native_assets_builder/CHANGELOG.md | 3 +++ .../lib/src/build_runner/build_runner.dart | 9 ++++++-- .../src/package_layout/package_layout.dart | 11 +++++++--- pkgs/native_assets_builder/pubspec.yaml | 2 +- .../build_runner/build_dependencies_test.dart | 10 +++++---- .../build_runner_caching_test.dart | 14 ++++++++---- .../build_runner_failure_test.dart | 4 ++-- .../build_runner_non_root_package_test.dart | 7 ++++-- .../test/build_runner/build_runner_test.dart | 13 ++++++----- .../test/build_runner/metadata_test.dart | 6 +++-- .../cyclic_package_1/{ => hook}/build.dart | 0 .../cyclic_package_2/{ => hook}/build.dart | 0 .../test_data/manifest.yaml | 22 +++++++++---------- .../native_add/{ => hook}/build.dart | 0 .../test_data/native_add/manifest.yaml | 2 +- .../{ => hook}/build.dart | 0 .../native_add_add_source/manifest.yaml | 2 +- .../native_subtract/{ => hook}/build.dart | 0 .../{ => hook}/build.dart | 0 .../package_reading_metadata/pubspec.yaml | 2 +- .../{ => hook}/build.dart | 0 .../package_with_metadata/pubspec.yaml | 2 +- .../wrong_build_output/{ => hook}/build.dart | 0 .../{ => hook}/build.dart | 0 .../{ => hook}/build.dart | 0 .../{ => hook}/build.dart | 0 pkgs/native_assets_cli/CHANGELOG.md | 2 ++ .../example/local_asset/{ => hook}/build.dart | 2 +- .../native_add_library/{ => hook}/build.dart | 0 .../use_dart_api/{ => hook}/build.dart | 0 .../example/use_dart_api/manifest.yaml | 2 +- pkgs/native_assets_cli/lib/src/api/build.dart | 2 +- .../test/example/local_asset_test.dart | 4 ++-- .../test/example/native_add_library_test.dart | 4 ++-- .../lib/src/cbuilder/cbuilder.dart | 4 ++-- 35 files changed, 80 insertions(+), 49 deletions(-) rename pkgs/native_assets_builder/test_data/cyclic_package_1/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/cyclic_package_2/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/native_add/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/native_add_add_source/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/native_subtract/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/package_reading_metadata/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/package_with_metadata/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/wrong_build_output/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/wrong_build_output_2/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/wrong_build_output_3/{ => hook}/build.dart (100%) rename pkgs/native_assets_builder/test_data/wrong_namespace_asset/{ => hook}/build.dart (100%) rename pkgs/native_assets_cli/example/local_asset/{ => hook}/build.dart (96%) rename pkgs/native_assets_cli/example/native_add_library/{ => hook}/build.dart (100%) rename pkgs/native_assets_cli/example/use_dart_api/{ => hook}/build.dart (100%) diff --git a/pkgs/native_assets_builder/CHANGELOG.md b/pkgs/native_assets_builder/CHANGELOG.md index ca1125660f..18da5ff666 100644 --- a/pkgs/native_assets_builder/CHANGELOG.md +++ b/pkgs/native_assets_builder/CHANGELOG.md @@ -1,6 +1,9 @@ ## 0.6.0-wip - **Breaking change** Completely rewritten API in `native_assets_cli`. +- **Breaking change** Move `build.dart` to `hook/build.dart`. + https://github.com/dart-lang/native/issues/823 + (Backwards compatibility, fallback to toplevel `build.dart`.) ## 0.5.0 diff --git a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart index 53e083ca3d..b158b2ae71 100644 --- a/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart +++ b/pkgs/native_assets_builder/lib/src/build_runner/build_runner.dart @@ -259,7 +259,8 @@ class NativeAssetsBuildRunner { }) async { final outDir = config.outputDirectory; final configFile = outDir.resolve('../config.yaml'); - final buildDotDart = config.packageRoot.resolve('build.dart'); + final buildHook = config.packageRoot.resolve('hook/').resolve('build.dart'); + final buildHookLegacy = config.packageRoot.resolve('build.dart'); final configFileContents = config.toYamlString(); logger.info('config.yaml contents: $configFileContents'); await File.fromUri(configFile).writeAsString(configFileContents); @@ -269,9 +270,13 @@ class NativeAssetsBuildRunner { // Ensure we'll never read outdated build results. await buildOutputFile.delete(); } + final arguments = [ '--packages=${packageConfigUri.toFilePath()}', - buildDotDart.toFilePath(), + if (await File.fromUri(buildHook).exists()) + buildHook.toFilePath() + else + buildHookLegacy.toFilePath(), '--config=${configFile.toFilePath()}', ]; final result = await runProcess( diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index 00b97d2ec1..a0c26642c0 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -86,15 +86,20 @@ class PackageLayout { /// All packages in [packageConfig] with native assets. /// /// Whether a package has native assets is defined by whether it contains - /// a `build.dart`. + /// a `hook/build.dart`. /// - /// `package:native` itself is excluded. + /// For backwards compatibility, a toplevel `build.dart` is also supported. late final Future> packagesWithNativeAssets = () async { final result = []; for (final package in packageConfig.packages) { final packageRoot = package.root; if (packageRoot.scheme == 'file') { - if (await File.fromUri(packageRoot.resolve('build.dart')).exists()) { + if (await File.fromUri( + packageRoot.resolve('hook/').resolve('build.dart'), + ).exists() || + await File.fromUri( + packageRoot.resolve('build.dart'), + ).exists()) { result.add(package); } } diff --git a/pkgs/native_assets_builder/pubspec.yaml b/pkgs/native_assets_builder/pubspec.yaml index bed088c254..acbec4c82d 100644 --- a/pkgs/native_assets_builder/pubspec.yaml +++ b/pkgs/native_assets_builder/pubspec.yaml @@ -1,6 +1,6 @@ name: native_assets_builder description: >- - This package is the backend that invokes top-level `build.dart` scripts. + This package is the backend that invokes `build.dart` hooks. version: 0.6.0-wip repository: https://github.com/dart-lang/native/tree/main/pkgs/native_assets_builder diff --git a/pkgs/native_assets_builder/test/build_runner/build_dependencies_test.dart b/pkgs/native_assets_builder/test/build_runner/build_dependencies_test.dart index 4e5de9136a..55e1cc93f1 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_dependencies_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_dependencies_test.dart @@ -32,8 +32,10 @@ void main() async { logMessages.join('\n'), stringContainsInOrder( [ - 'native_add${Platform.pathSeparator}build.dart', - 'native_subtract${Platform.pathSeparator}build.dart' + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + 'native_subtract${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', ], ), ); @@ -41,9 +43,9 @@ void main() async { expect( result.dependencies, [ - tempUri.resolve('native_add/').resolve('build.dart'), + tempUri.resolve('native_add/').resolve('hook/build.dart'), tempUri.resolve('native_add/').resolve('src/native_add.c'), - tempUri.resolve('native_subtract/').resolve('build.dart'), + tempUri.resolve('native_subtract/').resolve('hook/build.dart'), tempUri .resolve('native_subtract/') .resolve('src/native_subtract.c'), diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_caching_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_caching_test.dart index d5774cd105..cd2d45ce4b 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_caching_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_caching_test.dart @@ -29,12 +29,15 @@ void main() async { capturedLogs: logMessages); expect( logMessages.join('\n'), - contains('native_add${Platform.pathSeparator}build.dart'), + contains( + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + ), ); expect( result.dependencies, [ - packageUri.resolve('build.dart'), + packageUri.resolve('hook/build.dart'), packageUri.resolve('src/native_add.c'), ], ); @@ -50,12 +53,15 @@ void main() async { ); expect( logMessages.join('\n'), - isNot(contains('native_add${Platform.pathSeparator}build.dart')), + isNot(contains( + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + )), ); expect( result.dependencies, [ - packageUri.resolve('build.dart'), + packageUri.resolve('hook/build.dart'), packageUri.resolve('src/native_add.c'), ], ); diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_failure_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_failure_test.dart index 2355353ede..af6f235ed8 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_failure_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_failure_test.dart @@ -33,7 +33,7 @@ void main() async { expect( result.dependencies, [ - packageUri.resolve('build.dart'), + packageUri.resolve('hook/build.dart'), packageUri.resolve('src/native_add.c'), ], ); @@ -78,7 +78,7 @@ void main() async { expect( result.dependencies, [ - packageUri.resolve('build.dart'), + packageUri.resolve('hook/build.dart'), packageUri.resolve('src/native_add.c'), ], ); diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_non_root_package_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_non_root_package_test.dart index f1050f7418..4e16289fa7 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_non_root_package_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_non_root_package_test.dart @@ -48,13 +48,16 @@ void main() async { expect( result.dependencies, [ - packageUri.resolve('build.dart'), + packageUri.resolve('hook/build.dart'), packageUri.resolve('src/native_add.c'), ], ); expect( logMessages.join('\n'), - contains('native_add${Platform.pathSeparator}build.dart'), + contains( + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + ), ); } }); diff --git a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart index f6fff2cd89..2c2d33ffd4 100644 --- a/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/build_runner_test.dart @@ -31,8 +31,10 @@ void main() async { capturedLogs: logMessages); expect( logMessages.join('\n'), - stringContainsInOrder( - ['native_add${Platform.pathSeparator}build.dart'])); + stringContainsInOrder([ + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + ])); expect(result.assets.length, 1); } @@ -52,9 +54,10 @@ void main() async { ); expect( false, - logMessages - .join('\n') - .contains('native_add${Platform.pathSeparator}build.dart'), + logMessages.join('\n').contains( + 'native_add${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + ), ); expect(result.assets.length, 1); } diff --git a/pkgs/native_assets_builder/test/build_runner/metadata_test.dart b/pkgs/native_assets_builder/test/build_runner/metadata_test.dart index 12e9461f21..d38863533a 100644 --- a/pkgs/native_assets_builder/test/build_runner/metadata_test.dart +++ b/pkgs/native_assets_builder/test/build_runner/metadata_test.dart @@ -31,8 +31,10 @@ void main() async { expect( logMessages.join('\n'), stringContainsInOrder([ - 'package_with_metadata${Platform.pathSeparator}build.dart', - 'package_reading_metadata${Platform.pathSeparator}build.dart', + 'package_with_metadata${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', + 'package_reading_metadata${Platform.pathSeparator}hook' + '${Platform.pathSeparator}build.dart', '{some_int: 3, some_key: some_value}', ])); } diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_1/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/cyclic_package_1/build.dart rename to pkgs/native_assets_builder/test_data/cyclic_package_1/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart b/pkgs/native_assets_builder/test_data/cyclic_package_2/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/cyclic_package_2/build.dart rename to pkgs/native_assets_builder/test_data/cyclic_package_2/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/manifest.yaml b/pkgs/native_assets_builder/test_data/manifest.yaml index 04649be33a..5637dae406 100644 --- a/pkgs/native_assets_builder/test_data/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/manifest.yaml @@ -1,13 +1,13 @@ # The list of files to copy to a temporary folder to ensure running tests from # a completely clean setup. -- cyclic_package_1/build.dart +- cyclic_package_1/hook/build.dart - cyclic_package_1/pubspec.yaml -- cyclic_package_2/build.dart +- cyclic_package_2/hook/build.dart - cyclic_package_2/pubspec.yaml - dart_app/bin/dart_app.dart - dart_app/pubspec.yaml -- native_add/build.dart - native_add/ffigen.yaml +- native_add/hook/build.dart - native_add/lib/native_add.dart - native_add/lib/src/native_add_bindings_generated.dart - native_add/lib/src/native_add.dart @@ -15,25 +15,25 @@ - native_add/src/native_add.c - native_add/src/native_add.h - native_add/test/native_add_test.dart -- native_subtract/build.dart - native_subtract/ffigen.yaml +- native_subtract/hook/build.dart - native_subtract/lib/native_subtract.dart - native_subtract/lib/src/native_subtract_bindings_generated.dart - native_subtract/lib/src/native_subtract.dart - native_subtract/pubspec.yaml - native_subtract/src/native_subtract.c - native_subtract/src/native_subtract.h -- package_reading_metadata/build.dart +- package_reading_metadata/hook/build.dart - package_reading_metadata/pubspec.yaml -- package_with_metadata/build.dart +- package_with_metadata/hook/build.dart - package_with_metadata/pubspec.yaml - some_dev_dep/bin/some_dev_dep.dart - some_dev_dep/pubspec.yaml -- wrong_build_output/build.dart -- wrong_build_output/pubspec.yaml -- wrong_build_output_2/build.dart +- wrong_build_output_2/hook/build.dart - wrong_build_output_2/pubspec.yaml -- wrong_build_output_3/build.dart +- wrong_build_output_3/hook/build.dart - wrong_build_output_3/pubspec.yaml -- wrong_namespace_asset/build.dart +- wrong_build_output/hook/build.dart +- wrong_build_output/pubspec.yaml +- wrong_namespace_asset/hook/build.dart - wrong_namespace_asset/pubspec.yaml diff --git a/pkgs/native_assets_builder/test_data/native_add/build.dart b/pkgs/native_assets_builder/test_data/native_add/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/native_add/build.dart rename to pkgs/native_assets_builder/test_data/native_add/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/native_add/manifest.yaml b/pkgs/native_assets_builder/test_data/native_add/manifest.yaml index e922db8c1f..7f66e87ac1 100644 --- a/pkgs/native_assets_builder/test_data/native_add/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/native_add/manifest.yaml @@ -1,5 +1,5 @@ -- build.dart - ffigen.yaml +- hook/build.dart - lib/native_add.dart - lib/src/native_add_bindings_generated.dart - lib/src/native_add.dart diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/build.dart b/pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/native_add_add_source/build.dart rename to pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/manifest.yaml b/pkgs/native_assets_builder/test_data/native_add_add_source/manifest.yaml index 3a2f6c35d7..02d7d2bbc6 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/manifest.yaml +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/manifest.yaml @@ -1,3 +1,3 @@ -- build.dart +- hook/build.dart - src/native_multiply.c - src/native_multiply.h diff --git a/pkgs/native_assets_builder/test_data/native_subtract/build.dart b/pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/native_subtract/build.dart rename to pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/package_reading_metadata/build.dart b/pkgs/native_assets_builder/test_data/package_reading_metadata/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/package_reading_metadata/build.dart rename to pkgs/native_assets_builder/test_data/package_reading_metadata/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml index 679d9c1196..fa12cef5dc 100644 --- a/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_reading_metadata/pubspec.yaml @@ -1,5 +1,5 @@ name: package_reading_metadata -description: Reads some metadata in its build.dart +description: Reads some metadata in its hook/build.dart version: 0.1.0 publish_to: none diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/build.dart b/pkgs/native_assets_builder/test_data/package_with_metadata/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/package_with_metadata/build.dart rename to pkgs/native_assets_builder/test_data/package_with_metadata/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml index 577487967d..4e13c77ad0 100644 --- a/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml +++ b/pkgs/native_assets_builder/test_data/package_with_metadata/pubspec.yaml @@ -1,5 +1,5 @@ name: package_with_metadata -description: Sets some metadata in its build.dart +description: Sets some metadata in its hook/build.dart version: 0.1.0 publish_to: none diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/wrong_build_output/build.dart rename to pkgs/native_assets_builder/test_data/wrong_build_output/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/wrong_build_output_2/build.dart rename to pkgs/native_assets_builder/test_data/wrong_build_output_2/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart b/pkgs/native_assets_builder/test_data/wrong_build_output_3/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/wrong_build_output_3/build.dart rename to pkgs/native_assets_builder/test_data/wrong_build_output_3/hook/build.dart diff --git a/pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart b/pkgs/native_assets_builder/test_data/wrong_namespace_asset/hook/build.dart similarity index 100% rename from pkgs/native_assets_builder/test_data/wrong_namespace_asset/build.dart rename to pkgs/native_assets_builder/test_data/wrong_namespace_asset/hook/build.dart diff --git a/pkgs/native_assets_cli/CHANGELOG.md b/pkgs/native_assets_cli/CHANGELOG.md index 858b731cf8..291f6b5511 100644 --- a/pkgs/native_assets_cli/CHANGELOG.md +++ b/pkgs/native_assets_cli/CHANGELOG.md @@ -2,6 +2,8 @@ - **Breaking change** Completely rewritten API. https://github.com/dart-lang/native/pull/946 +- **Breaking change** Move `build.dart` to `hook/build.dart`. + https://github.com/dart-lang/native/issues/823 - Bump examples dependencies to path dependencies. ## 0.4.2 diff --git a/pkgs/native_assets_cli/example/local_asset/build.dart b/pkgs/native_assets_cli/example/local_asset/hook/build.dart similarity index 96% rename from pkgs/native_assets_cli/example/local_asset/build.dart rename to pkgs/native_assets_cli/example/local_asset/hook/build.dart index 4dab00e6ca..da500d40ef 100644 --- a/pkgs/native_assets_cli/example/local_asset/build.dart +++ b/pkgs/native_assets_cli/example/local_asset/hook/build.dart @@ -27,7 +27,7 @@ void main(List args) async { output.addDependencies([ assetSourcePath, - config.packageRoot.resolve('build.dart'), + config.packageRoot.resolve('hook/build.dart'), ]); } diff --git a/pkgs/native_assets_cli/example/native_add_library/build.dart b/pkgs/native_assets_cli/example/native_add_library/hook/build.dart similarity index 100% rename from pkgs/native_assets_cli/example/native_add_library/build.dart rename to pkgs/native_assets_cli/example/native_add_library/hook/build.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/build.dart b/pkgs/native_assets_cli/example/use_dart_api/hook/build.dart similarity index 100% rename from pkgs/native_assets_cli/example/use_dart_api/build.dart rename to pkgs/native_assets_cli/example/use_dart_api/hook/build.dart diff --git a/pkgs/native_assets_cli/example/use_dart_api/manifest.yaml b/pkgs/native_assets_cli/example/use_dart_api/manifest.yaml index e922db8c1f..2040bf57c2 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/manifest.yaml +++ b/pkgs/native_assets_cli/example/use_dart_api/manifest.yaml @@ -1,4 +1,4 @@ -- build.dart +- hook/build.dart - ffigen.yaml - lib/native_add.dart - lib/src/native_add_bindings_generated.dart diff --git a/pkgs/native_assets_cli/lib/src/api/build.dart b/pkgs/native_assets_cli/lib/src/api/build.dart index b6e805b5f0..39266d535e 100644 --- a/pkgs/native_assets_cli/lib/src/api/build.dart +++ b/pkgs/native_assets_cli/lib/src/api/build.dart @@ -66,7 +66,7 @@ import 'build_output.dart'; /// /// output.addDependencies([ /// assetSourcePath, -/// config.packageRoot.resolve('build.dart'), +/// config.packageRoot.resolve('hook/build.dart'), /// ]); /// } /// diff --git a/pkgs/native_assets_cli/test/example/local_asset_test.dart b/pkgs/native_assets_cli/test/example/local_asset_test.dart index f007d22b62..1eb446731f 100644 --- a/pkgs/native_assets_cli/test/example/local_asset_test.dart +++ b/pkgs/native_assets_cli/test/example/local_asset_test.dart @@ -38,7 +38,7 @@ void main() async { final processResult = await Process.run( dartUri.toFilePath(), [ - 'build.dart', + 'hook/build.dart', '-Dout_dir=${tempUri.toFilePath()}', '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', @@ -83,7 +83,7 @@ void main() async { dependencies, [ testPackageUri.resolve('data/asset.txt'), - testPackageUri.resolve('build.dart'), + testPackageUri.resolve('hook/build.dart'), ], ); } diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index 0de664ef9c..4f7d2c5a56 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -38,7 +38,7 @@ void main() async { final processResult = await Process.run( dartUri.toFilePath(), [ - 'build.dart', + 'hook/build.dart', '-Dout_dir=${tempUri.toFilePath()}', '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', @@ -83,7 +83,7 @@ void main() async { dependencies, [ testPackageUri.resolve('src/$name.c'), - testPackageUri.resolve('build.dart'), + testPackageUri.resolve('hook/build.dart'), ], ); } diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index 1476c3bb6f..a478f86a28 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -157,7 +157,7 @@ class CBuilder implements Builder { required this.assetName, this.sources = const [], this.includes = const [], - this.dartBuildFiles = const ['build.dart'], + this.dartBuildFiles = const ['hook/build.dart'], @visibleForTesting this.installName, this.flags = const [], this.defines = const {}, @@ -173,7 +173,7 @@ class CBuilder implements Builder { required this.name, this.sources = const [], this.includes = const [], - this.dartBuildFiles = const ['build.dart'], + this.dartBuildFiles = const ['hook/build.dart'], this.flags = const [], this.defines = const {}, this.buildModeDefine = true, From a1f130c77cd7900a090a28a976a0a2bb172026a0 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Fri, 15 Mar 2024 16:25:27 +0100 Subject: [PATCH 2/4] Undo changes in examples to ensure examples work until the change is rolled --- .../example/local_asset/{hook => }/build.dart | 4 +++- .../example/native_add_library/{hook => }/build.dart | 3 +++ .../example/use_dart_api/{hook => }/build.dart | 3 +++ pkgs/native_assets_cli/test/example/local_asset_test.dart | 8 ++++++-- .../test/example/native_add_library_test.dart | 8 ++++++-- 5 files changed, 21 insertions(+), 5 deletions(-) rename pkgs/native_assets_cli/example/local_asset/{hook => }/build.dart (89%) rename pkgs/native_assets_cli/example/native_add_library/{hook => }/build.dart (84%) rename pkgs/native_assets_cli/example/use_dart_api/{hook => }/build.dart (86%) diff --git a/pkgs/native_assets_cli/example/local_asset/hook/build.dart b/pkgs/native_assets_cli/example/local_asset/build.dart similarity index 89% rename from pkgs/native_assets_cli/example/local_asset/hook/build.dart rename to pkgs/native_assets_cli/example/local_asset/build.dart index da500d40ef..d04139eb66 100644 --- a/pkgs/native_assets_cli/example/local_asset/hook/build.dart +++ b/pkgs/native_assets_cli/example/local_asset/build.dart @@ -27,7 +27,9 @@ void main(List args) async { output.addDependencies([ assetSourcePath, - config.packageRoot.resolve('hook/build.dart'), + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + config.packageRoot.resolve('build.dart'), ]); } diff --git a/pkgs/native_assets_cli/example/native_add_library/hook/build.dart b/pkgs/native_assets_cli/example/native_add_library/build.dart similarity index 84% rename from pkgs/native_assets_cli/example/native_add_library/hook/build.dart rename to pkgs/native_assets_cli/example/native_add_library/build.dart index 86ea4c888d..d7661e3f6b 100644 --- a/pkgs/native_assets_cli/example/native_add_library/hook/build.dart +++ b/pkgs/native_assets_cli/example/native_add_library/build.dart @@ -15,6 +15,9 @@ void main(List args) async { sources: [ 'src/$packageName.c', ], + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + dartBuildFiles: ['build.dart'], ); await cbuilder.run( buildConfig: config, diff --git a/pkgs/native_assets_cli/example/use_dart_api/hook/build.dart b/pkgs/native_assets_cli/example/use_dart_api/build.dart similarity index 86% rename from pkgs/native_assets_cli/example/use_dart_api/hook/build.dart rename to pkgs/native_assets_cli/example/use_dart_api/build.dart index a776b5e6dd..04b7ca6c0c 100644 --- a/pkgs/native_assets_cli/example/use_dart_api/hook/build.dart +++ b/pkgs/native_assets_cli/example/use_dart_api/build.dart @@ -17,6 +17,9 @@ void main(List arguments) async { 'src/$packageName.c', 'src/dart_api_dl.c', ], + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + dartBuildFiles: ['build.dart'], ); await cbuilder.run( buildConfig: config, diff --git a/pkgs/native_assets_cli/test/example/local_asset_test.dart b/pkgs/native_assets_cli/test/example/local_asset_test.dart index 1eb446731f..f1b0bec746 100644 --- a/pkgs/native_assets_cli/test/example/local_asset_test.dart +++ b/pkgs/native_assets_cli/test/example/local_asset_test.dart @@ -38,7 +38,9 @@ void main() async { final processResult = await Process.run( dartUri.toFilePath(), [ - 'hook/build.dart', + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + 'build.dart', '-Dout_dir=${tempUri.toFilePath()}', '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', @@ -83,7 +85,9 @@ void main() async { dependencies, [ testPackageUri.resolve('data/asset.txt'), - testPackageUri.resolve('hook/build.dart'), + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + testPackageUri.resolve('build.dart'), ], ); } diff --git a/pkgs/native_assets_cli/test/example/native_add_library_test.dart b/pkgs/native_assets_cli/test/example/native_add_library_test.dart index 4f7d2c5a56..d5adf5d7c8 100644 --- a/pkgs/native_assets_cli/test/example/native_add_library_test.dart +++ b/pkgs/native_assets_cli/test/example/native_add_library_test.dart @@ -38,7 +38,9 @@ void main() async { final processResult = await Process.run( dartUri.toFilePath(), [ - 'hook/build.dart', + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + 'build.dart', '-Dout_dir=${tempUri.toFilePath()}', '-Dpackage_name=$name', '-Dpackage_root=${testPackageUri.toFilePath()}', @@ -83,7 +85,9 @@ void main() async { dependencies, [ testPackageUri.resolve('src/$name.c'), - testPackageUri.resolve('hook/build.dart'), + // TODO(https://github.com/dart-lang/native/issues/823): Update after + // change is rolled into Dart SDK. + testPackageUri.resolve('build.dart'), ], ); } From 571a542f68b280ff13a0e2614d72059b132c2eca Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Fri, 15 Mar 2024 16:32:25 +0100 Subject: [PATCH 3/4] Remove default value for `dartBuildFiles`. --- .../test_data/native_add/hook/build.dart | 1 + .../test_data/native_add_add_source/hook/build.dart | 1 + .../test_data/native_subtract/hook/build.dart | 1 + pkgs/native_assets_cli/lib/src/api/build.dart | 1 + pkgs/native_toolchain_c/CHANGELOG.md | 2 ++ pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart | 4 ++-- .../test/cbuilder/cbuilder_build_failure_test.dart | 1 + .../test/cbuilder/cbuilder_cross_android_test.dart | 1 + .../test/cbuilder/cbuilder_cross_ios_test.dart | 1 + .../test/cbuilder/cbuilder_cross_linux_host_test.dart | 1 + .../test/cbuilder/cbuilder_cross_macos_host_test.dart | 1 + .../test/cbuilder/cbuilder_cross_windows_host_test.dart | 1 + pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart | 8 ++++++++ 13 files changed, 22 insertions(+), 2 deletions(-) diff --git a/pkgs/native_assets_builder/test_data/native_add/hook/build.dart b/pkgs/native_assets_builder/test_data/native_add/hook/build.dart index 07118b3c8c..ff2b8b5436 100644 --- a/pkgs/native_assets_builder/test_data/native_add/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add/hook/build.dart @@ -16,6 +16,7 @@ void main(List arguments) async { sources: [ 'src/$packageName.c', ], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: config, diff --git a/pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart b/pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart index aba869dee2..f42cd9db12 100644 --- a/pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/native_add_add_source/hook/build.dart @@ -17,6 +17,7 @@ void main(List arguments) async { 'src/$packageName.c', 'src/native_multiply.c', ], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: config, diff --git a/pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart b/pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart index d1b1f6f077..7e2a43791b 100644 --- a/pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart +++ b/pkgs/native_assets_builder/test_data/native_subtract/hook/build.dart @@ -16,6 +16,7 @@ void main(List arguments) async { sources: [ 'src/$packageName.c', ], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: config, diff --git a/pkgs/native_assets_cli/lib/src/api/build.dart b/pkgs/native_assets_cli/lib/src/api/build.dart index 39266d535e..e36f96d7ba 100644 --- a/pkgs/native_assets_cli/lib/src/api/build.dart +++ b/pkgs/native_assets_cli/lib/src/api/build.dart @@ -26,6 +26,7 @@ import 'build_output.dart'; /// sources: [ /// 'src/$packageName.c', /// ], +/// dartBuildFiles: ['hook/build.dart'], /// ); /// await cbuilder.run( /// buildConfig: config, diff --git a/pkgs/native_toolchain_c/CHANGELOG.md b/pkgs/native_toolchain_c/CHANGELOG.md index 9e7e56f96d..dc54048462 100644 --- a/pkgs/native_toolchain_c/CHANGELOG.md +++ b/pkgs/native_toolchain_c/CHANGELOG.md @@ -1,6 +1,8 @@ ## 0.4.0-wip - **Breaking change** Completely rewritten API in `native_assets_cli`. +- **Breaking change** No longer assumes `build.dart` to be the main script. + https://github.com/dart-lang/native/issues/823 ## 0.3.4+1 diff --git a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart index a478f86a28..6cb0592bc0 100644 --- a/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart +++ b/pkgs/native_toolchain_c/lib/src/cbuilder/cbuilder.dart @@ -157,7 +157,7 @@ class CBuilder implements Builder { required this.assetName, this.sources = const [], this.includes = const [], - this.dartBuildFiles = const ['hook/build.dart'], + required this.dartBuildFiles, @visibleForTesting this.installName, this.flags = const [], this.defines = const {}, @@ -173,7 +173,7 @@ class CBuilder implements Builder { required this.name, this.sources = const [], this.includes = const [], - this.dartBuildFiles = const ['hook/build.dart'], + required this.dartBuildFiles, this.flags = const [], this.defines = const {}, this.buildModeDefine = true, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_build_failure_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_build_failure_test.dart index d7aa14d6b3..ae80750f0e 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_build_failure_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_build_failure_test.dart @@ -49,6 +49,7 @@ void main() { sources: [addCUri.toFilePath()], name: name, assetName: name, + dartBuildFiles: ['hook/build.dart'], ); expect( () => cbuilder.run( diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_android_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_android_test.dart index af22594f48..250a72d459 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_android_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_android_test.dart @@ -142,6 +142,7 @@ Future buildLib( name: name, assetName: name, sources: [addCUri.toFilePath()], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_ios_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_ios_test.dart index 7cc4365e48..574b298a9c 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_ios_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_ios_test.dart @@ -75,6 +75,7 @@ void main() { assetName: name, sources: [addCUri.toFilePath()], installName: installName, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_linux_host_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_linux_host_test.dart index eab2a77e4a..0bad5ff68e 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_linux_host_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_linux_host_test.dart @@ -61,6 +61,7 @@ void main() { name: name, assetName: name, sources: [addCUri.toFilePath()], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_macos_host_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_macos_host_test.dart index 971855e2f8..3f7a74f8ec 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_macos_host_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_macos_host_test.dart @@ -59,6 +59,7 @@ void main() { name: name, assetName: name, sources: [addCUri.toFilePath()], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_windows_host_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_windows_host_test.dart index 8575c77953..e189f71451 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_windows_host_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_cross_windows_host_test.dart @@ -71,6 +71,7 @@ void main() { name: name, assetName: name, sources: [addCUri.toFilePath()], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, diff --git a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart index b801a1e5ae..3d0e15d5c9 100644 --- a/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart +++ b/pkgs/native_toolchain_c/test/cbuilder/cbuilder_test.dart @@ -63,6 +63,7 @@ void main() { name: name, sources: [helloWorldCUri.toFilePath()], pie: pic, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -143,6 +144,7 @@ void main() { name: name, assetName: name, pic: pic, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -240,6 +242,7 @@ void main() { name: name, sources: [definesCUri.toFilePath()], flags: [flag], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -293,6 +296,7 @@ void main() { assetName: name, includes: [includeDirectoryUri.toFilePath()], sources: [includesCUri.toFilePath()], + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -343,6 +347,7 @@ void main() { name: name, assetName: name, std: std, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -403,6 +408,7 @@ void main() { name: name, sources: [helloWorldCppUri.toFilePath()], language: Language.cpp, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, @@ -460,6 +466,7 @@ void main() { sources: [helloWorldCppUri.toFilePath()], language: Language.cpp, cppLinkStdLib: 'stdc++', + dartBuildFiles: ['hook/build.dart'], ); if (buildConfig.targetOS == OS.windows) { @@ -535,6 +542,7 @@ Future testDefines({ }, buildModeDefine: buildModeDefine, ndebugDefine: ndebugDefine, + dartBuildFiles: ['hook/build.dart'], ); await cbuilder.run( buildConfig: buildConfig, From a4d305ab59f28a808661069677b97924b4ab18a4 Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Tue, 19 Mar 2024 11:24:52 +0100 Subject: [PATCH 4/4] add todo --- .../lib/src/package_layout/package_layout.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart index a0c26642c0..a68b00c8f2 100644 --- a/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart +++ b/pkgs/native_assets_builder/lib/src/package_layout/package_layout.dart @@ -89,6 +89,9 @@ class PackageLayout { /// a `hook/build.dart`. /// /// For backwards compatibility, a toplevel `build.dart` is also supported. + // TODO(https://github.com/dart-lang/native/issues/823): Remove fallback when + // everyone has migrated. (Probably once we stop backwards compatibility of + // the protocol version pre 1.2.0 on some future version.) late final Future> packagesWithNativeAssets = () async { final result = []; for (final package in packageConfig.packages) {