dart-lang / native

Dart packages related to FFI and native assets bundling.
BSD 3-Clause "New" or "Revised" License
82 stars 27 forks source link

[ffigen] Move core ObjC classes to package:objective_c #1088

Closed liamappelbe closed 1 month ago

liamappelbe commented 1 month ago

Moves classes like NSObject and NSString to package:objective_c.

You can find a full list of the classes exposed by package:objective_c in pkgs/objective_c/ffigen_objc.yaml, under include:. This list was generated by pulling in a few core classes, and then seeing what transitive deps they pull in. The list is complete in the sense that it includes every ObjC wrapper class in lib/src/objective_c_bindings_generated.dart. The reason it needs to be complete is that if we choose not to expose one of them, say NSCharacterSet, it will instead end up in the user's generated code, but that version of NSCharacterSet won't be compatible with the one used by our NSString. This list is replicated in a few different places so one of the tests verifies that they're all in sync.

At the moment, the only class that has convenience utils is NSString. I wanted to put all those utils in lib/src/ns_string.dart, but some of them need to be built into the class itself. So the rest are in tool/extra_methods.dart, and are inserted into the generated NSString class by tool/generate_code.dart. This tool also runs the two separate ffigen configs. There's one config for the C bindings of the ObjC runtime functions, and another for the ObjC bindings for all the core classes, because ffigen only handles one language at a time.

Ffigen changes:

Fixes https://github.com/dart-lang/native/issues/430

github-actions[bot] commented 1 month ago

PR Health

Changelog Entry :heavy_check_mark:

Details | Package | Changed Files | | :--- | :--- | Changes to files need to be [accounted for](https://github.com/dart-lang/ecosystem/wiki/Changelog) in their respective changelogs.

Coverage :warning:

Details | File | Coverage | | :--- | :--- | |pkgs/ffigen/example/objective_c/avf_audio_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/example/objective_c/play_audio.dart| :broken_heart: Not covered | |pkgs/ffigen/example/swift/swift_api_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/imports.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/library.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_interface.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/pointer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/writer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/config_provider/config.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/config_provider/spec_utils.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/executables/ffigen.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/data.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/parser.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/strings.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/objective_c.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/core.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/ns_string.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/objective_c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/data/extra_methods.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/generate_code.dart| :broken_heart: Not covered | This check for [test coverage](https://github.com/dart-lang/ecosystem/wiki/Test-Coverage) is informational (issues shown here will not fail the PR). This check can be disabled by tagging the PR with `skip-coverage-check`.

License Headers :heavy_check_mark:

Details ``` // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. ``` | Files | | :--- | | _no missing headers_ | All source files should start with a [license header](https://github.com/dart-lang/ecosystem/wiki/License-Header).
Unrelated files missing license headers | Files | | :--- | |pkgs/ffi/example/main.dart| |pkgs/ffigen/example/libclang-example/generated_bindings.dart| |pkgs/ffigen/example/shared_bindings/generate.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart| |pkgs/ffigen/example/simple/generated_bindings.dart| |pkgs/ffigen/lib/src/config_provider/config_spec.dart| |pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart| |pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart| |pkgs/jni/lib/src/lang/jcharacter.dart| |pkgs/jni/lib/src/third_party/generated_bindings.dart| |pkgs/jni/lib/src/third_party/global_env_extensions.dart| |pkgs/jni/lib/src/third_party/jni_bindings_generated.dart| |pkgs/jnigen/android_test_runner/lib/main.dart| |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| |pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart| |pkgs/jnigen/lib/src/bindings/descriptor.dart| |pkgs/jnigen/lib/src/elements/elements.g.dart| |pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/tool/command_runner.dart|

Package publish validation :heavy_check_mark:

Details | Package | Version | Status | | :--- | ---: | :--- | | package:ffi | 2.1.2 | already published at pub.dev | | package:ffigen | 12.0.0-wip | WIP (no publish necessary) | | package:jni | 0.8.0 | already published at pub.dev | | package:jnigen | 0.8.1-wip | WIP (no publish necessary) | | package:native_assets_builder | 0.6.1 | already published at pub.dev | | package:native_assets_cli | 0.5.4 | already published at pub.dev | | package:native_toolchain_c | 0.4.1 | already published at pub.dev | | package:objective_c | 0.0.1-wip | WIP (no publish necessary) | Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
github-actions[bot] commented 1 month ago

PR Health

Changelog Entry :exclamation:

Details | Package | Changed Files | | :--- | :--- | | package:objective_c | pkgs/objective_c/lib/objective_c.dart
pkgs/objective_c/lib/src/c_bindings_generated.dart
pkgs/objective_c/lib/src/core.dart
pkgs/objective_c/lib/src/ns_string.dart
pkgs/objective_c/lib/src/objective_c_bindings_generated.dart
pkgs/objective_c/pubspec.yaml | Changes to files need to be [accounted for](https://github.com/dart-lang/ecosystem/wiki/Changelog) in their respective changelogs. This check can be disabled by tagging the PR with `skip-changelog-check`

Coverage :warning:

Details | File | Coverage | | :--- | :--- | |pkgs/ffigen/example/objective_c/avf_audio_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/example/objective_c/play_audio.dart| :broken_heart: Not covered | |pkgs/ffigen/example/swift/swift_api_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/imports.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/library.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_interface.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/pointer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/writer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/config_provider/config.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/executables/ffigen.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/data.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/parser.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/strings.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/objective_c.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/core.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/ns_string.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/objective_c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/extra_methods.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/generate_code.dart| :broken_heart: Not covered | This check for [test coverage](https://github.com/dart-lang/ecosystem/wiki/Test-Coverage) is informational (issues shown here will not fail the PR). This check can be disabled by tagging the PR with `skip-coverage-check`

License Headers :heavy_check_mark:

Details ``` // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. ``` | Files | | :--- | | _no missing headers_ | All source files should start with a [license header](https://github.com/dart-lang/ecosystem/wiki/License-Header).
Unrelated files missing license headers | Files | | :--- | |pkgs/ffi/example/main.dart| |pkgs/ffigen/example/libclang-example/generated_bindings.dart| |pkgs/ffigen/example/shared_bindings/generate.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart| |pkgs/ffigen/example/simple/generated_bindings.dart| |pkgs/ffigen/lib/src/config_provider/config_spec.dart| |pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart| |pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart| |pkgs/jni/lib/src/lang/jcharacter.dart| |pkgs/jni/lib/src/third_party/generated_bindings.dart| |pkgs/jni/lib/src/third_party/global_env_extensions.dart| |pkgs/jni/lib/src/third_party/jni_bindings_generated.dart| |pkgs/jnigen/android_test_runner/lib/main.dart| |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| |pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart| |pkgs/jnigen/lib/src/bindings/descriptor.dart| |pkgs/jnigen/lib/src/elements/elements.g.dart| |pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/tool/command_runner.dart|

Package publish validation :heavy_check_mark:

Details | Package | Version | Status | | :--- | ---: | :--- | | package:ffi | 2.1.2 | already published at pub.dev | | package:ffigen | 12.0.0-wip | WIP (no publish necessary) | | package:jni | 0.8.0 | already published at pub.dev | | package:jnigen | 0.8.1-wip | WIP (no publish necessary) | | package:native_assets_builder | 0.6.1 | already published at pub.dev | | package:native_assets_cli | 0.5.4 | already published at pub.dev | | package:native_toolchain_c | 0.4.1 | already published at pub.dev | | package:objective_c | 0.0.1-wip | WIP (no publish necessary) | Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
github-actions[bot] commented 1 month ago

PR Health

Changelog Entry :exclamation:

Details | Package | Changed Files | | :--- | :--- | | package:objective_c | pkgs/objective_c/lib/objective_c.dart
pkgs/objective_c/lib/src/c_bindings_generated.dart
pkgs/objective_c/lib/src/core.dart
pkgs/objective_c/lib/src/ns_string.dart
pkgs/objective_c/lib/src/objective_c_bindings_generated.dart
pkgs/objective_c/pubspec.yaml | Changes to files need to be [accounted for](https://github.com/dart-lang/ecosystem/wiki/Changelog) in their respective changelogs. This check can be disabled by tagging the PR with `skip-changelog-check`

Coverage :warning:

Details | File | Coverage | | :--- | :--- | |pkgs/ffigen/example/objective_c/avf_audio_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/example/objective_c/play_audio.dart| :broken_heart: Not covered | |pkgs/ffigen/example/swift/swift_api_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/imports.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/library.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_interface.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/pointer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/writer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/config_provider/config.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/executables/ffigen.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/data.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/parser.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/strings.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/objective_c.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/core.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/ns_string.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/objective_c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/extra_methods.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/generate_code.dart| :broken_heart: Not covered | This check for [test coverage](https://github.com/dart-lang/ecosystem/wiki/Test-Coverage) is informational (issues shown here will not fail the PR). This check can be disabled by tagging the PR with `skip-coverage-check`

License Headers :heavy_check_mark:

Details ``` // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. ``` | Files | | :--- | | _no missing headers_ | All source files should start with a [license header](https://github.com/dart-lang/ecosystem/wiki/License-Header).
Unrelated files missing license headers | Files | | :--- | |pkgs/ffi/example/main.dart| |pkgs/ffigen/example/libclang-example/generated_bindings.dart| |pkgs/ffigen/example/shared_bindings/generate.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart| |pkgs/ffigen/example/simple/generated_bindings.dart| |pkgs/ffigen/lib/src/config_provider/config_spec.dart| |pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart| |pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart| |pkgs/jni/lib/src/lang/jcharacter.dart| |pkgs/jni/lib/src/third_party/generated_bindings.dart| |pkgs/jni/lib/src/third_party/global_env_extensions.dart| |pkgs/jni/lib/src/third_party/jni_bindings_generated.dart| |pkgs/jnigen/android_test_runner/lib/main.dart| |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| |pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart| |pkgs/jnigen/lib/src/bindings/descriptor.dart| |pkgs/jnigen/lib/src/elements/elements.g.dart| |pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/tool/command_runner.dart|

Package publish validation :heavy_check_mark:

Details | Package | Version | Status | | :--- | ---: | :--- | | package:ffi | 2.1.2 | already published at pub.dev | | package:ffigen | 12.0.0-wip | WIP (no publish necessary) | | package:jni | 0.8.0 | already published at pub.dev | | package:jnigen | 0.8.1-wip | WIP (no publish necessary) | | package:native_assets_builder | 0.6.1 | already published at pub.dev | | package:native_assets_cli | 0.5.4 | already published at pub.dev | | package:native_toolchain_c | 0.4.1 | already published at pub.dev | | package:objective_c | 0.0.1-wip | WIP (no publish necessary) | Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
github-actions[bot] commented 1 month ago

PR Health

Changelog Entry :exclamation:

Details | Package | Changed Files | | :--- | :--- | | package:objective_c | pkgs/objective_c/lib/objective_c.dart
pkgs/objective_c/lib/src/c_bindings_generated.dart
pkgs/objective_c/lib/src/core.dart
pkgs/objective_c/lib/src/ns_string.dart
pkgs/objective_c/lib/src/objective_c_bindings_generated.dart
pkgs/objective_c/pubspec.yaml | Changes to files need to be [accounted for](https://github.com/dart-lang/ecosystem/wiki/Changelog) in their respective changelogs. This check can be disabled by tagging the PR with `skip-changelog-check`

Coverage :warning:

Details | File | Coverage | | :--- | :--- | |pkgs/ffigen/example/objective_c/avf_audio_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/example/objective_c/play_audio.dart| :broken_heart: Not covered | |pkgs/ffigen/example/swift/swift_api_bindings.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/imports.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/library.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_built_in_functions.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/objc_interface.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/pointer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/code_generator/writer.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/config_provider/config.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/executables/ffigen.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/data.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/header_parser/parser.dart| :broken_heart: Not covered | |pkgs/ffigen/lib/src/strings.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/objective_c.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/core.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/ns_string.dart| :broken_heart: Not covered | |pkgs/objective_c/lib/src/objective_c_bindings_generated.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/extra_methods.dart| :broken_heart: Not covered | |pkgs/objective_c/tool/generate_code.dart| :broken_heart: Not covered | This check for [test coverage](https://github.com/dart-lang/ecosystem/wiki/Test-Coverage) is informational (issues shown here will not fail the PR). This check can be disabled by tagging the PR with `skip-coverage-check`

License Headers :heavy_check_mark:

Details ``` // Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. ``` | Files | | :--- | | _no missing headers_ | All source files should start with a [license header](https://github.com/dart-lang/ecosystem/wiki/License-Header).
Unrelated files missing license headers | Files | | :--- | |pkgs/ffi/example/main.dart| |pkgs/ffigen/example/libclang-example/generated_bindings.dart| |pkgs/ffigen/example/shared_bindings/generate.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/a_shared_b_gen.dart| |pkgs/ffigen/example/shared_bindings/lib/generated/base_gen.dart| |pkgs/ffigen/example/simple/generated_bindings.dart| |pkgs/ffigen/lib/src/config_provider/config_spec.dart| |pkgs/ffigen/lib/src/header_parser/clang_bindings/clang_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_decl_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_symbol_address_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_decl_type_name_collision_bindings.dart| |pkgs/ffigen/test/collision_tests/expected_bindings/_expected_reserved_keyword_collision_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_comment_markup_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_dart_handle_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_forward_decl_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_functions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_imported_types_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_native_func_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_opaque_dependencies_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_packed_structs_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_regress_384_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_struct_fptr_fields_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_typedef_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_unions_bindings.dart| |pkgs/ffigen/test/header_parser_tests/expected_bindings/_expected_varargs_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_cjson_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_libclang_bindings.dart| |pkgs/ffigen/test/large_integration_tests/_expected_sqlite_bindings.dart| |pkgs/ffigen/test/native_test/_expected_native_test_bindings.dart| |pkgs/jni/lib/src/lang/jcharacter.dart| |pkgs/jni/lib/src/third_party/generated_bindings.dart| |pkgs/jni/lib/src/third_party/global_env_extensions.dart| |pkgs/jni/lib/src/third_party/jni_bindings_generated.dart| |pkgs/jnigen/android_test_runner/lib/main.dart| |pkgs/jnigen/example/in_app_java/lib/android_utils.dart| |pkgs/jnigen/example/kotlin_plugin/example/lib/main.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_bindings.dart| |pkgs/jnigen/example/kotlin_plugin/lib/kotlin_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/pdfbox_plugin.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/_init.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocument.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/PDDocumentInformation.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/pdmodel/_package.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/PDFTextStripper.dart| |pkgs/jnigen/example/pdfbox_plugin/lib/src/third_party/org/apache/pdfbox/text/_package.dart| |pkgs/jnigen/lib/src/bindings/descriptor.dart| |pkgs/jnigen/lib/src/elements/elements.g.dart| |pkgs/jnigen/test/jackson_core_test/third_party/c_based/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/test/jackson_core_test/third_party/dart_only/dart_bindings/com/fasterxml/jackson/core/_package.dart| |pkgs/jnigen/tool/command_runner.dart|

Package publish validation :heavy_check_mark:

Details | Package | Version | Status | | :--- | ---: | :--- | | package:ffi | 2.1.2 | already published at pub.dev | | package:ffigen | 12.0.0-wip | WIP (no publish necessary) | | package:jni | 0.8.0 | already published at pub.dev | | package:jnigen | 0.8.1-wip | WIP (no publish necessary) | | package:native_assets_builder | 0.6.1 | already published at pub.dev | | package:native_assets_cli | 0.5.4 | already published at pub.dev | | package:native_toolchain_c | 0.4.1 | already published at pub.dev | | package:objective_c | 0.0.1-wip | WIP (no publish necessary) | Documentation at https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.
coveralls commented 1 month ago

Coverage Status

coverage: 91.74% (-0.1%) from 91.864% when pulling 2e79e23beef55982907fbfc498c250101b90b4d8 on pkgobjc2 into ffc493da2e357887922a5f5ff887f0f2e1e3d2c7 on main.

liamappelbe commented 1 month ago

The coverage is a bit misleading. Overall the coverage has gone up to 92.37%, but the package:objective_c data isn't included in this report. I spent some time trying to debug it, but I think it's just because objective_c_tests is new. I think the problem will resolve itself after this PR is submitted.

dcharkes commented 1 month ago

FYI @HosseinYousefi for changes to jni infra. Apparently we were missing some carryforwards.

liamappelbe commented 1 month ago

FYI @HosseinYousefi for changes to jni infra. Apparently we were missing some carryforwards.

Before, we had the carryforwards for each file to be all the flag-names for every other file. This works, but it's a bit fiddly to maintain. Setting all the carryforwards to include all the flag-names means they can all be identical, which will be easier to maintain. From the carryforward documentation, the behavior should be the same either way.