Remove DylibDependingRule, PlatformRule and MultiArchPlatformRule.
These are no longer used, now that AppleBinary and AppleStaticLibrary have been removed from native code.
PiperOrigin-RevId: 464108026
Change-Id: I7fff4c16696cf3ec4578f70df24a8e1935577d9f
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java
index 4632b51..74051a7 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java
@@ -64,10 +64,7 @@
builder.addRuleDefinition(new ObjcImportBaseRule());
builder.addRuleDefinition(new ObjcLibraryBaseRule());
builder.addRuleDefinition(new ObjcRuleClasses.CoptsRule());
- builder.addRuleDefinition(new ObjcRuleClasses.DylibDependingRule());
builder.addRuleDefinition(new ObjcRuleClasses.CompilingRule());
- builder.addRuleDefinition(new ObjcRuleClasses.PlatformRule());
- builder.addRuleDefinition(new ObjcRuleClasses.MultiArchPlatformRule());
builder.addRuleDefinition(new ObjcRuleClasses.AlwaysLinkRule());
builder.addRuleDefinition(new ObjcRuleClasses.SdkFrameworksDependerRule());
builder.addRuleDefinition(new ObjcRuleClasses.CompileDependencyRule());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
index 832f005..8e538d4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -39,7 +39,6 @@
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
-import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.PlatformRule;
import com.google.devtools.build.lib.starlarkbuildapi.SplitTransitionProviderApi;
import java.util.List;
import java.util.Map;
@@ -81,14 +80,14 @@
*/
public static PlatformType getPlatformType(RuleContext ruleContext) throws RuleErrorException {
String attributeValue =
- ruleContext.attributes().get(PlatformRule.PLATFORM_TYPE_ATTR_NAME, STRING);
+ ruleContext.attributes().get(ObjcRuleClasses.PLATFORM_TYPE_ATTR_NAME, STRING);
try {
return getPlatformType(attributeValue);
} catch (
@SuppressWarnings("UnusedException")
ApplePlatform.UnsupportedPlatformTypeException exception) {
throw ruleContext.throwWithAttributeError(
- PlatformRule.PLATFORM_TYPE_ATTR_NAME,
+ ObjcRuleClasses.PLATFORM_TYPE_ATTR_NAME,
String.format(UNSUPPORTED_PLATFORM_TYPE_ERROR_FORMAT, attributeValue));
}
}
@@ -113,8 +112,10 @@
@Override
public SplitTransition create(AttributeTransitionData data) {
- String platformTypeString = data.attributes().get(PlatformRule.PLATFORM_TYPE_ATTR_NAME, STRING);
- String minimumOsVersionString = data.attributes().get(PlatformRule.MINIMUM_OS_VERSION, STRING);
+ String platformTypeString =
+ data.attributes().get(ObjcRuleClasses.PLATFORM_TYPE_ATTR_NAME, STRING);
+ String minimumOsVersionString =
+ data.attributes().get(ObjcRuleClasses.MINIMUM_OS_VERSION, STRING);
PlatformType platformType;
Optional<DottedVersion> minimumOsVersion;
try {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 41832be..f6ed945 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -18,12 +18,10 @@
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static com.google.devtools.build.lib.packages.BuildType.NODEP_LABEL;
-import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates;
import static com.google.devtools.build.lib.packages.Type.BOOLEAN;
import static com.google.devtools.build.lib.packages.Type.STRING;
import static com.google.devtools.build.lib.packages.Type.STRING_LIST;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
@@ -38,10 +36,8 @@
import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
-import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
-import com.google.devtools.build.lib.packages.StarlarkProviderIdentifier;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.ApplePlatform;
@@ -69,8 +65,8 @@
*/
public static IntermediateArtifacts intermediateArtifacts(
RuleContext ruleContext, BuildConfigurationValue buildConfiguration) {
- return new IntermediateArtifacts(ruleContext, /*archiveFileNameSuffix*/ "",
- /*outputPrefix*/ "", buildConfiguration);
+ return new IntermediateArtifacts(
+ ruleContext, /* archiveFileNameSuffix= */ "", /* outputPrefix= */ "", buildConfiguration);
}
/**
@@ -535,194 +531,13 @@
}
}
- /**
- * Template for the fat binary output (using Apple's "lipo" tool to combine binaries of multiple
- * architectures).
- */
- public static final SafeImplicitOutputsFunction LIPOBIN_OUTPUT = fromTemplates("%{name}_lipobin");
+ /** Attribute name for apple platform type (e.g. ios or watchos). */
+ static final String PLATFORM_TYPE_ATTR_NAME = "platform_type";
- /**
- * Common attributes for apple rules that produce outputs for a given platform type (such as ios
- * or watchos).
- */
- public static class PlatformRule implements RuleDefinition {
+ /** Attribute name for the minimum OS version (e.g. "7.3"). */
+ static final String MINIMUM_OS_VERSION = "minimum_os_version";
- /**
- * Attribute name for apple platform type (e.g. ios or watchos).
- */
- static final String PLATFORM_TYPE_ATTR_NAME = "platform_type";
-
- /**
- * Attribute name for the minimum OS version (e.g. "7.3").
- */
- static final String MINIMUM_OS_VERSION = "minimum_os_version";
-
- @Override
- public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
- return builder
- /* <!-- #BLAZE_RULE($apple_platform_rule).ATTRIBUTE(platform_type) -->
- The type of platform for which to create artifacts in this rule.
-
- This dictates which Apple platform SDK is used for compilation/linking and which flag is
- used to determine the architectures for which to build. For example, if <code>ios</code>
- is selected, then the output binaries/libraries will be created combining all
- architectures specified in <code>--ios_multi_cpus</code>.
-
- Options are:
- <ul>
- <li>
- <code>ios</code>: architectures gathered from <code>--ios_multi_cpus</code>.
- </li>
- <li>
- <code>macos</code>: architectures gathered from <code>--macos_cpus</code>.
- </li>
- <li>
- <code>tvos</code>: architectures gathered from <code>--tvos_cpus</code>.
- </li>
- <li>
- <code>watchos</code>: architectures gathered from <code>--watchos_cpus</code>.
- </li>
- </ul>
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .add(
- attr(PLATFORM_TYPE_ATTR_NAME, STRING)
- .mandatory())
- /* <!-- #BLAZE_RULE($apple_platform_rule).ATTRIBUTE(minimum_os_version) -->
- The minimum OS version that this target and its dependencies should be built for.
-
- This should be a dotted version string such as "7.3".
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .add(
- attr(MINIMUM_OS_VERSION, STRING))
- .build();
- }
-
- @Override
- public Metadata getMetadata() {
- return RuleDefinition.Metadata.builder()
- .name("$apple_platform_rule")
- .type(RuleClassType.ABSTRACT)
- .build();
- }
- }
-
- /**
- * Common attributes for apple rules that build multi-architecture outputs for a given platform
- * type (such as ios or watchos).
- */
- public static class MultiArchPlatformRule implements RuleDefinition {
- /**
- * Rule class names for cc rules which are allowed as targets of the 'deps' attribute of this
- * rule.
- */
- static final ImmutableSet<String> ALLOWED_CC_DEPS_RULE_CLASSES =
- ImmutableSet.of("cc_library", "cc_inc_library");
-
- @Override
- public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
- MultiArchSplitTransitionProvider splitTransitionProvider =
- new MultiArchSplitTransitionProvider();
- return builder
- // This is currently a hack to obtain all child configurations regardless of the attribute
- // values of this rule -- this rule does not currently use the actual info provided by
- // this attribute.
- .add(
- attr(CHILD_CONFIG_ATTR, LABEL)
- .cfg(splitTransitionProvider)
- .value(env.getToolsLabel("//tools/cpp:current_cc_toolchain")))
- /* <!-- #BLAZE_RULE($apple_multiarch_rule).ATTRIBUTE(deps) -->
- The list of targets that are linked together to form the final binary.
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .override(
- attr("deps", LABEL_LIST)
- .direct_compile_time_input()
- .allowedRuleClasses(ALLOWED_CC_DEPS_RULE_CLASSES)
- .mandatoryProviders(ObjcProvider.STARLARK_CONSTRUCTOR.id())
- .cfg(splitTransitionProvider)
- .allowedFileTypes())
- /* <!-- #BLAZE_RULE($apple_multiarch_rule).ATTRIBUTE(linkopts) -->
- Extra flags to pass to the linker.
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .add(attr("linkopts", STRING_LIST))
- /* <!-- #BLAZE_RULE($apple_multiarch_rule).ATTRIBUTE(additional_linker_inputs) -->
- Extra files to pass to the linker.
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .add(
- attr("additional_linker_inputs", LABEL_LIST)
- .orderIndependent()
- .direct_compile_time_input()
- .allowedFileTypes(FileTypeSet.ANY_FILE))
- .add(
- // This attribute definition must be kept in sync with
- // third_party/bazel_rules/rules_apple/apple/internal/rule_factory.bzl
- attr("$j2objc_dead_code_pruner", LABEL)
- .cfg(ExecutionTransitionFactory.create())
- .exec()
- // Allow arbitrary executable files; this gives more flexibility for the
- // implementation of the underlying tool.
- .legacyAllowAnyFileType()
- .value(env.getToolsLabel("//tools/objc:j2objc_dead_code_pruner_binary")))
- .add(attr("$dummy_lib", LABEL).value(env.getToolsLabel("//tools/objc:dummy_lib")))
- .build();
- }
-
- @Override
- public Metadata getMetadata() {
- return RuleDefinition.Metadata.builder()
- .name("$apple_multiarch_rule")
- .type(RuleClassType.ABSTRACT)
- .ancestors(
- PlatformRule.class,
- CrosstoolRule.class,
- BaseRuleClasses.NativeActionCreatingRule.class,
- CppRuleClasses.CcIncludeScanningRule.class,
- XcrunRule.class,
- SdkFrameworksDependerRule.class)
- .build();
- }
- }
-
- /**
- * Common attributes for apple rules that can depend on one or more dynamic libraries.
- */
- public static class DylibDependingRule implements RuleDefinition {
- /**
- * Attribute name for dylib dependencies.
- */
- static final String DYLIBS_ATTR_NAME = "dylibs";
-
- @Override
- public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
- return builder
- /* <!-- #BLAZE_RULE($apple_dylib_depending_rule).ATTRIBUTE(dylibs) -->
- <p>A list of dynamic library targets to be linked against in this rule and included
- in the final binary. Libraries which are transitive dependencies of any such dylibs will
- not be statically linked in this target (even if they are otherwise
- transitively depended on via the <code>deps</code> attribute) to avoid duplicate symbols.
- <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/
- .add(
- attr(DYLIBS_ATTR_NAME, LABEL_LIST)
- .direct_compile_time_input()
- .mandatoryProviders(
- ImmutableList.of(
- StarlarkProviderIdentifier.forKey(
- AppleDynamicFrameworkInfo.STARLARK_CONSTRUCTOR.getKey())))
- .allowedFileTypes())
- .build();
- }
-
- @Override
- public Metadata getMetadata() {
- return RuleDefinition.Metadata.builder()
- .name("$apple_dylib_depending_rule")
- .type(RuleClassType.ABSTRACT)
- .build();
- }
- }
-
- /**
- * Common attributes for {@code objc_*} rules that need to call xcrun.
- */
+ /** Common attributes for {@code objc_*} rules that need to call xcrun. */
public static class XcrunRule implements RuleDefinition {
@Override
public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {