diff options
author | 2016-11-22 20:26:32 +0000 | |
---|---|---|
committer | 2016-11-23 08:50:59 +0000 | |
commit | c944c4d9fc5cbad830b69383a76ffff463088c7e (patch) | |
tree | f82e66e9b269272e53bd8ade0f75f3f19ec7db16 /src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java | |
parent | 0aac8f7d4f2cea1834df4aaf4cad35d3425d874b (diff) |
Alias proto_library's produce a descriptor set that contains all srcs of its dependencies.
(alias proto_library's are those with a deps attribute but no srcs attribute)
RELNOTES: Alias proto_library's produce a descriptor set that contains all srcs of its dependencies.
--
MOS_MIGRATED_REVID=139940475
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java index 7819f13d22..6b107fe655 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java @@ -58,27 +58,36 @@ public class BazelProtoLibrary implements RuleConfiguredTargetFactory { transitiveImports, !protoSources.isEmpty()); - Artifact descriptorSetOutput = - ruleContext.getGenfilesArtifact( - ruleContext.getLabel().getName() + "-descriptor-set.proto.bin"); - ProtoCompileActionBuilder.writeDescriptorSet( - ruleContext, - descriptorSetOutput.getExecPathString(), - supportData, - ImmutableList.of(descriptorSetOutput), - true /* allowServices */); + Runfiles.Builder dataRunfiles = + ProtoCommon.createDataRunfilesProvider(transitiveImports, ruleContext); - Runfiles dataRunfiles = - ProtoCommon.createDataRunfilesProvider(transitiveImports, ruleContext) - .addArtifact(descriptorSetOutput) - .build(); + RuleConfiguredTargetBuilder result = new RuleConfiguredTargetBuilder(ruleContext); - return new RuleConfiguredTargetBuilder(ruleContext) - .setFilesToBuild(NestedSetBuilder.create(STABLE_ORDER, descriptorSetOutput)) - .addProvider(RunfilesProvider.withData(Runfiles.EMPTY, dataRunfiles)) + if (checkDepsProtoSources.isEmpty()) { + result.setFilesToBuild(NestedSetBuilder.<Artifact>create(STABLE_ORDER)); + } else { + Artifact descriptorSetOutput = + ruleContext.getGenfilesArtifact( + ruleContext.getLabel().getName() + "-descriptor-set.proto.bin"); + ProtoCompileActionBuilder.writeDescriptorSet( + ruleContext, + descriptorSetOutput.getExecPathString(), + checkDepsProtoSources, + transitiveImports, + null /* protosInDirectDeps */, + ImmutableList.of(descriptorSetOutput), + true /* allowServices */); + + dataRunfiles.addArtifact(descriptorSetOutput); + + result.setFilesToBuild(NestedSetBuilder.create(STABLE_ORDER, descriptorSetOutput)); + result.addProvider(DescriptorSetProvider.create(descriptorSetOutput)); + } + + return result + .addProvider(RunfilesProvider.withData(Runfiles.EMPTY, dataRunfiles.build())) .addProvider(ProtoSourcesProvider.class, sourcesProvider) .addProvider(ProtoSupportDataProvider.class, new ProtoSupportDataProvider(supportData)) - .addProvider(DescriptorSetProvider.create(descriptorSetOutput)) .addSkylarkTransitiveInfo(ProtoSourcesProvider.SKYLARK_NAME, sourcesProvider) .build(); } |