diff options
4 files changed, 15 insertions, 53 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index 4b04b5a2cb..0944470754 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -317,7 +317,6 @@ public class BazelRuleClassProvider { builder.addRuleDefinition(new ObjcProtoLibraryRule()); builder.addRuleDefinition(new ObjcXcodeprojRule()); builder.addRuleDefinition(new ObjcRuleClasses.CoptsRule()); - builder.addRuleDefinition(new ObjcRuleClasses.ObjcProtoRule()); builder.addRuleDefinition(new ObjcRuleClasses.IosTestBaseRule()); builder.addRuleDefinition(new ObjcRuleClasses.BundlingRule()); builder.addRuleDefinition(new ObjcRuleClasses.ReleaseBundlingRule()); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java index 2117bf52ae..c2880b40f7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java @@ -62,7 +62,7 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory { @Override public ConfiguredTarget create(final RuleContext ruleContext) throws InterruptedException { Artifact compileProtos = ruleContext.getPrerequisiteArtifact( - ObjcRuleClasses.ObjcProtoRule.COMPILE_PROTOS_ATTR, Mode.HOST); + ObjcProtoLibraryRule.COMPILE_PROTOS_ATTR, Mode.HOST); Optional<Artifact> optionsFile = Optional.fromNullable( ruleContext.getPrerequisiteArtifact(ObjcProtoLibraryRule.OPTIONS_FILE_ATTR, Mode.HOST)); NestedSet<Artifact> protos = NestedSetBuilder.<Artifact>stableOrder() @@ -80,7 +80,7 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory { .getPrerequisiteArtifacts(ObjcProtoLibraryRule.LIBPROTOBUF_ATTR, Mode.TARGET) .list(); ImmutableList<Artifact> protoSupport = ruleContext - .getPrerequisiteArtifacts(ObjcRuleClasses.ObjcProtoRule.PROTO_SUPPORT_ATTR, Mode.HOST) + .getPrerequisiteArtifacts(ObjcProtoLibraryRule.PROTO_SUPPORT_ATTR, Mode.HOST) .list(); // Generate sources in a package-and-rule-scoped directory; adds both the diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java index 2163ae0d4a..c46dcbe76a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java @@ -28,6 +28,7 @@ import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.Type; +import com.google.devtools.build.lib.util.FileType; /** * Rule definition for objc_proto_library. @@ -35,6 +36,8 @@ import com.google.devtools.build.lib.packages.Type; * This is a temporary rule until it is better known how to support proto_library rules. */ public class ObjcProtoLibraryRule implements RuleDefinition { + static final String COMPILE_PROTOS_ATTR = "$googlemac_proto_compiler"; + static final String PROTO_SUPPORT_ATTR = "$googlemac_proto_compiler_support"; static final String OPTIONS_FILE_ATTR = "options_file"; static final String OUTPUT_CPP_ATTR = "output_cpp"; static final String USE_OBJC_HEADER_NAMES_ATTR = "use_objc_header_names"; @@ -65,6 +68,15 @@ public class ObjcProtoLibraryRule implements RuleDefinition { If true, output headers with .pbobjc.h, rather than .pb.h. ${SYNOPSIS} <!-- #END_BLAZE_RULE.ATTRIBUTE -->*/ + .add(attr(COMPILE_PROTOS_ATTR, LABEL) + .allowedFileTypes(FileType.of(".py")) + .cfg(HOST) + .singleArtifact() + .value(env.getLabel("//tools/objc:compile_protos"))) + .add(attr(PROTO_SUPPORT_ATTR, LABEL) + .legacyAllowAnyFileType() + .cfg(HOST) + .value(env.getLabel("//tools/objc:proto_support"))) .add(attr(USE_OBJC_HEADER_NAMES_ATTR, BOOLEAN).value(false)) .add(attr(LIBPROTOBUF_ATTR, LABEL).allowedRuleClasses("objc_library") .value(new ComputedDefault(OUTPUT_CPP_ATTR) { @@ -85,9 +97,7 @@ public class ObjcProtoLibraryRule implements RuleDefinition { return RuleDefinition.Metadata.builder() .name("objc_proto_library") .factoryClass(ObjcProtoLibrary.class) - .ancestors( - BaseRuleClasses.RuleBase.class, - ObjcRuleClasses.ObjcProtoRule.class) + .ancestors(BaseRuleClasses.RuleBase.class) .build(); } } 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 87361921fb..916c0fb0e4 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 @@ -23,7 +23,6 @@ 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.annotations.VisibleForTesting; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -724,52 +723,6 @@ public class ObjcRuleClasses { } } - /** - * Common attributes for rules that uses ObjC proto compiler. - */ - public static class ObjcProtoRule implements RuleDefinition { - /** - * A Predicate that returns true if the ObjC proto compiler and its support deps are needed by - * the current rule. - * - * <p>For proto_library rules, this will return true if they have a j2objc_api_version - * attribute, and it is greater than 0. For other rules, this will return true by default. - */ - public static final Predicate<AttributeMap> USE_PROTO_COMPILER = new Predicate<AttributeMap>() { - @Override - public boolean apply(AttributeMap rule) { - return rule.getAttributeDefinition("j2objc_api_version") == null - || rule.get("j2objc_api_version", Type.INTEGER) != 0; - } - }; - - public static final String COMPILE_PROTOS_ATTR = "$googlemac_proto_compiler"; - public static final String PROTO_SUPPORT_ATTR = "$googlemac_proto_compiler_support"; - - @Override - public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { - return builder - .add(attr(COMPILE_PROTOS_ATTR, LABEL) - .allowedFileTypes(FileType.of(".py")) - .cfg(HOST) - .singleArtifact() - .condition(USE_PROTO_COMPILER) - .value(env.getLabel("//tools/objc:compile_protos"))) - .add(attr(PROTO_SUPPORT_ATTR, LABEL) - .legacyAllowAnyFileType() - .cfg(HOST) - .condition(USE_PROTO_COMPILER) - .value(env.getLabel("//tools/objc:proto_support"))) - .build(); - } - @Override - public Metadata getMetadata() { - return RuleDefinition.Metadata.builder() - .name("$objc_proto_rule") - .type(RuleClassType.ABSTRACT) - .build(); - } - } /** * Base rule definition for iOS test rules. |