diff options
author | Carmi Grushko <carmi@google.com> | 2016-11-16 05:39:54 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-11-16 15:59:24 +0000 |
commit | 234b66acc0772ef4cb01a042751d86c1c003e51c (patch) | |
tree | 2f862c3cd82f87da7d4129ac45a982d7137a5fc9 /src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java | |
parent | 732907fcdd7a156e084b5e44a768f12ca2a0423a (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.java | 33 |
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. * |