bazel-ios / rules_ios

Bazel rules for building iOS applications and frameworks
Apache License 2.0
276 stars 84 forks source link

Support `--incompatible_objc_provider_remove_linking_info` #867

Open luispadron opened 4 months ago

luispadron commented 4 months ago

In Bazel 7 a new flag: --incompatible_objc_provider_remove_linking_info was added to further delete these link attrs from the ObjcProvider making it an error if the attr is used or set. This will be flipped in a future Bazel version (probably Bazel 8). We should update our rules to conditionally forward ObjcProvider linking information to support this flag.

luispadron commented 4 months ago

Example error you'd see with this flag enabled:

ERROR: /Users/lpadron/Development/rules_ios/tests/ios/app-clip/BUILD.bazel:39:16: in dep_middleman rule //tests/ios/app-clip:App.dep_middleman: 
Traceback (most recent call last):
        File "/Users/lpadron/Development/rules_ios/rules/internal/framework_middleman.bzl", line 267, column 73, in _dep_middleman
                objc_provider_fields = objc_provider_utils.merge_objc_providers_dict(providers = objc_providers, merge_keys = [
        File "/Users/lpadron/Development/rules_ios/rules/internal/objc_provider_utils.bzl", line 28, column 34, in _merge_objc_providers_dict
                transitive = [getattr(provider, key) for provider in providers],
Error in getattr: 'ObjcProvider' value has no field or method 'force_load_library'