aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-11-10 19:37:20 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-11-11 10:04:04 +0000
commit51f64da2d9a917a18c292e624260e50544a09347 (patch)
treefdaf5eca8885afca31545f7e6a6428b41dafd809 /src/main/java/com/google/devtools/build/lib/rules
parent8dc081031d6c0cf6d5e65915c7322e0aa79aeb54 (diff)
Blacklists for proto_lang_toolchain() no longer have to be proto_library's.
The intention is to use filegroup's instead. The motivation is to avoid materializing the transitive srcs of a proto_library, which might be large. Using a filegroup makes it explicit that we only take the listed files into account. RELNOTES: Blacklists for proto_lang_toolchain() no longer have to be proto_library's. -- MOS_MIGRATED_REVID=138784908
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java12
2 files changed, 10 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
index 83b57c7b17..370a732223 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchain.java
@@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
@@ -35,9 +36,9 @@ public class ProtoLangToolchain implements RuleConfiguredTargetFactory {
public ConfiguredTarget create(RuleContext ruleContext)
throws InterruptedException, RuleErrorException {
NestedSetBuilder<Artifact> blacklistedProtos = NestedSetBuilder.stableOrder();
- for (ProtoSourcesProvider protos :
- ruleContext.getPrerequisites("blacklisted_protos", TARGET, ProtoSourcesProvider.class)) {
- blacklistedProtos.addAll(protos.getDirectProtoSources());
+ for (FileProvider protos :
+ ruleContext.getPrerequisites("blacklisted_protos", TARGET, FileProvider.class)) {
+ blacklistedProtos.addTransitive(protos.getFilesToBuild());
}
return new RuleConfiguredTargetBuilder(ruleContext)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
index 2643357f42..b525abd231 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoLangToolchainRule.java
@@ -21,6 +21,7 @@ import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
+import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
@@ -70,8 +71,7 @@ public class ProtoLangToolchainRule implements RuleDefinition {
attr("blacklisted_protos", LABEL_LIST)
.allowedFileTypes()
.mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(
- ProtoSourcesProvider.class)))
+ ImmutableList.<Class<? extends TransitiveInfoProvider>>of(FileProvider.class)))
.build();
}
@@ -112,10 +112,10 @@ It's beneficial to enforce the compiler that LANG_proto_library uses is the same
<pre class="code">
proto_lang_toolchain(
- name = "java_stubby1_immutable",
- command_line = "--$(PLUGIN_out)=no_enforce_api_compatibility,java_stubby_version=1,immutable:$(OUT)",
- plugin = "//net/rpc/compiler:proto2_java_plugin",
- runtime = "//java/com/google/net/rpc3:rpc3",
+ name = "javalite_toolchain",
+ command_line = "--$(PLUGIN_OUT)=shared,immutable:$(OUT)",
+ plugin = ":javalite_plugin",
+ runtime = ":protobuf_lite",
)
</pre>