From 928d64e35883b42ba44786e55e1482cd9f13c850 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 18 Jan 2024 12:56:58 -0800 Subject: [PATCH 1/3] Switch back to last_green Linked issue is fixed at head This reverts commit 9c0c81a174ef2ecaf8833ac0bf770b5328e13edd. --- .bazelci/presubmit.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.bazelci/presubmit.yml b/.bazelci/presubmit.yml index b4ba047e33..9115a00a00 100644 --- a/.bazelci/presubmit.yml +++ b/.bazelci/presubmit.yml @@ -15,9 +15,7 @@ x_defaults: test_flags: - --test_tag_filters=-skipci common_last_green: &common_last_green - # TODO: switch back to last_green once - # https://github.com/bazelbuild/stardoc/issues/195 is fixed. - bazel: e82c1d156fd1fad5f08ee1b014ef02bea86ec632 + bazel: last_green build_flags: - --config=visionos test_flags: From ec3192eb9f40059e8b0f53ee74542846ea776108 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Thu, 18 Jan 2024 15:59:21 -0800 Subject: [PATCH 2/3] more objc fixes --- apple/internal/linking_support.bzl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apple/internal/linking_support.bzl b/apple/internal/linking_support.bzl index 2d4e5f30b8..721ea3e86d 100644 --- a/apple/internal/linking_support.bzl +++ b/apple/internal/linking_support.bzl @@ -99,10 +99,6 @@ def _sectcreate_objc_provider(label, segname, sectname, file): # set. linkopts = ["-Wl,-sectcreate,%s,%s,%s" % (segname, sectname, file.path)] return [ - apple_common.new_objc_provider( - linkopt = depset(linkopts, order = "topological"), - link_inputs = depset([file]), - ), CcInfo( linking_context = cc_common.create_linking_context( linker_inputs = depset([ @@ -114,7 +110,12 @@ def _sectcreate_objc_provider(label, segname, sectname, file): ]), ), ), - ] + ] + ([ + apple_common.new_objc_provider( + linkopt = depset(linkopts, order = "topological"), + link_inputs = depset([file]), + ), + ] if _OBJC_PROVIDER_LINKING else []) def _register_binary_linking_action( ctx, From a9d5e8316699013a875a941f6642fcac9bc077ff Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Mon, 22 Jan 2024 10:19:15 -0800 Subject: [PATCH 3/3] even more --- apple/internal/ios_rules.bzl | 16 +++++++++++----- apple/internal/macos_rules.bzl | 16 +++++++++++----- .../internal/partials/framework_provider.bzl | 14 ++++++++++---- apple/internal/tvos_rules.bzl | 19 +++++++++++++------ apple/internal/watchos_rules.bzl | 16 +++++++++++----- 5 files changed, 56 insertions(+), 25 deletions(-) diff --git a/apple/internal/ios_rules.bzl b/apple/internal/ios_rules.bzl index 20d23dbaa9..64e7b4f73b 100644 --- a/apple/internal/ios_rules.bzl +++ b/apple/internal/ios_rules.bzl @@ -143,6 +143,9 @@ load("@build_bazel_rules_swift//swift:swift.bzl", "SwiftInfo") load("@bazel_skylib//lib:collections.bzl", "collections") load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") +# TODO: Remove once we drop bazel 7.x +_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt") + def _ios_application_impl(ctx): """Implementation of ios_application.""" rule_descriptor = rule_support.rule_descriptor( @@ -1607,10 +1610,7 @@ def _ios_dynamic_framework_impl(ctx): feature_configuration = cc_features, libraries = provider.framework_files.to_list(), ) - additional_providers.extend([ - apple_common.new_objc_provider( - dynamic_framework_file = provider.framework_files, - ), + additional_providers.append( CcInfo( linking_context = cc_common.create_linking_context( linker_inputs = depset([ @@ -1621,7 +1621,13 @@ def _ios_dynamic_framework_impl(ctx): ]), ), ), - ]) + ) + if _OBJC_PROVIDER_LINKING: + additional_providers.append( + apple_common.new_objc_provider( + dynamic_framework_file = provider.framework_files, + ), + ) providers.extend(additional_providers) return [ diff --git a/apple/internal/macos_rules.bzl b/apple/internal/macos_rules.bzl index a549e0e823..201de31cb4 100644 --- a/apple/internal/macos_rules.bzl +++ b/apple/internal/macos_rules.bzl @@ -142,6 +142,9 @@ load( ) load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") +# TODO: Remove once we drop bazel 7.x +_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt") + def _macos_application_impl(ctx): """Implementation of macos_application.""" rule_descriptor = rule_support.rule_descriptor( @@ -3194,10 +3197,7 @@ def _macos_dynamic_framework_impl(ctx): feature_configuration = cc_features, libraries = provider.framework_files.to_list(), ) - additional_providers.extend([ - apple_common.new_objc_provider( - dynamic_framework_file = provider.framework_files, - ), + additional_providers.append( CcInfo( linking_context = cc_common.create_linking_context( linker_inputs = depset([ @@ -3208,7 +3208,13 @@ def _macos_dynamic_framework_impl(ctx): ]), ), ), - ]) + ) + if _OBJC_PROVIDER_LINKING: + additional_providers.append( + apple_common.new_objc_provider( + dynamic_framework_file = provider.framework_files, + ), + ) providers.extend(additional_providers) return [ diff --git a/apple/internal/partials/framework_provider.bzl b/apple/internal/partials/framework_provider.bzl index 1af62e7f1a..7871717c28 100644 --- a/apple/internal/partials/framework_provider.bzl +++ b/apple/internal/partials/framework_provider.bzl @@ -27,6 +27,9 @@ load( "framework_import_support", ) +# TODO: Remove once we drop bazel 7.x +_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt") + def _framework_provider_partial_impl( *, actions, @@ -62,10 +65,13 @@ def _framework_provider_partial_impl( # TODO(cparsons): These will no longer be necessary once apple_binary # uses the values in the dynamic framework provider. - legacy_objc_provider = apple_common.new_objc_provider( - dynamic_framework_file = depset([] if bundle_only else [framework_file]), - providers = [objc_provider], - ) + if _OBJC_PROVIDER_LINKING: + legacy_objc_provider = apple_common.new_objc_provider( + dynamic_framework_file = depset([] if bundle_only else [framework_file]), + providers = [objc_provider], + ) + else: + legacy_objc_provider = None library_to_link = cc_common.create_library_to_link( actions = actions, diff --git a/apple/internal/tvos_rules.bzl b/apple/internal/tvos_rules.bzl index eb0cdfb0fe..59d32cce9d 100644 --- a/apple/internal/tvos_rules.bzl +++ b/apple/internal/tvos_rules.bzl @@ -134,6 +134,9 @@ load( ) load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain") +# TODO: Remove once we drop bazel 7.x +_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt") + def _tvos_application_impl(ctx): """Experimental implementation of tvos_application.""" rule_descriptor = rule_support.rule_descriptor( @@ -698,10 +701,7 @@ def _tvos_dynamic_framework_impl(ctx): feature_configuration = cc_features, libraries = provider.framework_files.to_list(), ) - additional_providers.extend([ - apple_common.new_objc_provider( - dynamic_framework_file = provider.framework_files, - ), + additional_providers.append( CcInfo( linking_context = cc_common.create_linking_context( linker_inputs = depset([ @@ -712,7 +712,13 @@ def _tvos_dynamic_framework_impl(ctx): ]), ), ), - ]) + ) + if _OBJC_PROVIDER_LINKING: + additional_providers.append( + apple_common.new_objc_provider( + dynamic_framework_file = provider.framework_files, + ), + ) providers.extend(additional_providers) return [ @@ -1244,8 +1250,9 @@ def _tvos_extension_impl(ctx): processor_result.output_groups, ) ), - apple_common.new_executable_binary_provider( + linking_support.new_executable_binary_provider( binary = binary_artifact, + cc_info = link_result.cc_info, objc = link_result.objc, ), new_tvosextensionbundleinfo(), diff --git a/apple/internal/watchos_rules.bzl b/apple/internal/watchos_rules.bzl index e3965c5ce4..f0553efbc5 100644 --- a/apple/internal/watchos_rules.bzl +++ b/apple/internal/watchos_rules.bzl @@ -137,6 +137,9 @@ load( "sets", ) +# TODO: Remove once we drop bazel 7.x +_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt") + def _watchos_framework_impl(ctx): """Experimental implementation of watchos_framework.""" rule_descriptor = rule_support.rule_descriptor( @@ -651,10 +654,7 @@ def _watchos_dynamic_framework_impl(ctx): feature_configuration = cc_features, libraries = provider.framework_files.to_list(), ) - additional_providers.extend([ - apple_common.new_objc_provider( - dynamic_framework_file = provider.framework_files, - ), + additional_providers.append( CcInfo( linking_context = cc_common.create_linking_context( linker_inputs = depset([ @@ -665,7 +665,13 @@ def _watchos_dynamic_framework_impl(ctx): ]), ), ), - ]) + ) + if _OBJC_PROVIDER_LINKING: + additional_providers.append( + apple_common.new_objc_provider( + dynamic_framework_file = provider.framework_files, + ), + ) providers.extend(additional_providers) return [