aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-11-16 05:39:54 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-11-16 15:59:24 +0000
commit234b66acc0772ef4cb01a042751d86c1c003e51c (patch)
tree2f862c3cd82f87da7d4129ac45a982d7137a5fc9 /src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
parent732907fcdd7a156e084b5e44a768f12ca2a0423a (diff)
proto_library now produces a descriptor set, when built on the command-line.
RELNOTES: proto_library now produces a descriptor set, when built on the command-line. -- MOS_MIGRATED_REVID=139288944
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
index 14b66abadd..f279be3d7f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.proto;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.Iterables.isEmpty;
+import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
@@ -34,6 +35,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.util.LazyString;
import java.util.HashSet;
import java.util.List;
@@ -321,10 +323,7 @@ public class ProtoCompileActionBuilder {
ImmutableList.Builder<String> builder = ImmutableList.builder();
for (Artifact artifact : transitiveImports) {
builder.add(
- "-I"
- + artifact.getRootRelativePath().getPathString()
- + "="
- + artifact.getExecPathString());
+ "-I" + artifact.getRootRelativePathString() + "=" + artifact.getExecPathString());
}
return builder.build();
}
@@ -333,6 +332,32 @@ public class ProtoCompileActionBuilder {
/** Signifies that a prerequisite could not be satisfied. */
private static class MissingPrerequisiteException extends RuntimeException {}
+ public static void writeDescriptorSet(
+ RuleContext ruleContext,
+ final CharSequence outReplacement,
+ SupportData supportData,
+ Iterable<Artifact> outputs,
+ boolean allowServices) {
+ registerActions(
+ ruleContext,
+ ImmutableList.of(createDescriptorSetToolchain(outReplacement)),
+ supportData,
+ outputs,
+ "Descriptor Set",
+ allowServices);
+ }
+
+ private static ToolchainInvocation createDescriptorSetToolchain(CharSequence outReplacement) {
+ return new ToolchainInvocation(
+ "dontcare",
+ ProtoLangToolchainProvider.create(
+ "--descriptor_set_out=$(OUT)",
+ null /* pluginExecutable */,
+ null /* runtime */,
+ NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER) /* blacklistedProtos */),
+ outReplacement);
+ }
+
/**
* Registers actions to generate code from .proto files.
*