Change madatory provider for objc_library to CcInfo
This does not affect most rules, because Objective-C has already
migrated its compile info to CcInfo, so any rules with compile info
already must have a CcInfo. Rules that this change breaks can simply
add an empty CcInfo to the providers they return.
RELNOTES[INC]: objc_library now requires CcInfo in its deps. If this breaks you, add empty CcInfo() to your rule.
PiperOrigin-RevId: 451038913
Change-Id: I5ac3a8ece4be610e346eb014bd0aa5184659f0ea
diff --git a/src/main/starlark/builtins_bzl/common/objc/attrs.bzl b/src/main/starlark/builtins_bzl/common/objc/attrs.bzl
index 5532bd4..8fea74c 100644
--- a/src/main/starlark/builtins_bzl/common/objc/attrs.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/attrs.bzl
@@ -16,7 +16,7 @@
load("@_builtins//:common/objc/semantics.bzl", "semantics")
-ObjcInfo = _builtins.toplevel.apple_common.Objc
+CcInfo = _builtins.toplevel.CcInfo
AppleDynamicFrameworkInfo = _builtins.toplevel.apple_common.AppleDynamicFramework
TemplateVariableInfo = _builtins.toplevel.platform_common.TemplateVariableInfo
@@ -80,11 +80,7 @@
"includes": attr.string_list(),
"sdk_includes": attr.string_list(),
"deps": attr.label_list(
- providers = [ObjcInfo],
- allow_rules = [
- "cc_library",
- "cc_inc_library",
- ],
+ providers = [CcInfo],
flags = ["DIRECT_COMPILE_TIME_INPUT"],
),
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index cca510e..06fddc8 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -721,7 +721,7 @@
"libs/defs.bzl",
"def _custom_static_framework_import_impl(ctx):",
" return [apple_common.new_objc_provider(",
- " static_framework_file=depset(ctx.files.link_inputs))]",
+ " static_framework_file=depset(ctx.files.link_inputs)), CcInfo()]",
"custom_static_framework_import = rule(",
" _custom_static_framework_import_impl,",
" attrs={'link_inputs': attr.label_list(allow_files=True)},",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java
index 204bd20..8817400 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java
@@ -32,6 +32,7 @@
import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
+import com.google.devtools.build.lib.rules.cpp.CcInfo;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
import java.util.Map;
@@ -304,13 +305,12 @@
}
@Test
- public void testObjcRuleCanDependOnArbitraryStarlarkRuleThatProvidesObjc() throws Exception {
+ public void testObjcRuleCanDependOnArbitraryStarlarkRuleThatProvidesCcInfo() throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
"def my_rule_impl(ctx):",
- " objc_provider = apple_common.new_objc_provider(linkopt=depset(['mock_linkopt']))",
- " return [objc_provider]",
+ " return [CcInfo()]",
"my_rule = rule(implementation = my_rule_impl,",
" attrs = {})");
@@ -336,8 +336,7 @@
")");
ConfiguredTarget libTarget = getConfiguredTarget("//examples/apple_starlark:lib");
- ObjcProvider libObjcProvider = libTarget.get(ObjcProvider.STARLARK_CONSTRUCTOR);
- assertThat(libObjcProvider.get(ObjcProvider.LINKOPT).toList()).contains("mock_linkopt");
+ assertThat(libTarget.get(CcInfo.PROVIDER)).isNotNull();
}
@Test
@@ -956,7 +955,7 @@
" strict_includes = depset(['path'])",
" created_provider = apple_common.new_objc_provider\\",
"(strict_include=strict_includes)",
- " return [created_provider]");
+ " return [created_provider, CcInfo()]");
ObjcProvider starlarkProvider = starlarkTarget.get(ObjcProvider.STARLARK_CONSTRUCTOR);
assertThat(starlarkProvider.getStrictDependencyIncludes())