aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Rumou Duan <rduan@google.com>2015-07-28 00:11:51 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-07-28 07:53:32 +0000
commiteae9d8cb1cc79b5afc9131a6ec4600e20908b2af (patch)
treeb2290b24bb8998b3228509b16982e4c9c924bcda
parent52f2410bf3d98ff16dcf5a6b4917f00f236fab63 (diff)
Description redacted.
-- MOS_MIGRATED_REVID=99234569
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryRule.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java47
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.