diff options
author | Carmi Grushko <carmi@google.com> | 2016-11-23 23:34:22 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-11-24 10:33:00 +0000 |
commit | 0c5c3484d3b717cdafe4a2983375cedae32989c0 (patch) | |
tree | 661093d6344b0db21c3f067452f16e3d1e4d076d /src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java | |
parent | 64de4b555a93aa9779cbf54aa1202193a4ed76a5 (diff) |
Strict deps for proto_library.
In other words, all imported protos must be declared as BUILD dependencies.
RELNOTES: proto_library supports strict proto deps.
--
MOS_MIGRATED_REVID=140078632
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 | 14 |
1 files changed, 10 insertions, 4 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 6b107fe655..b81e6e0a70 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 @@ -14,13 +14,14 @@ package com.google.devtools.build.lib.rules.proto; +import static com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode.TARGET; import static com.google.devtools.build.lib.collect.nestedset.Order.STABLE_ORDER; +import static com.google.devtools.build.lib.syntax.Type.BOOLEAN; import com.google.common.base.Predicates; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; @@ -37,7 +38,7 @@ public class BazelProtoLibrary implements RuleConfiguredTargetFactory { public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException { ImmutableList<Artifact> protoSources = - ruleContext.getPrerequisiteArtifacts("srcs", Mode.TARGET).list(); + ruleContext.getPrerequisiteArtifacts("srcs", TARGET).list(); ImmutableList<Artifact> checkDepsProtoSources = ProtoCommon.getCheckDepsProtoSources(ruleContext, protoSources); ProtoCommon.checkSourceFilesAreInSamePackage(ruleContext); @@ -50,11 +51,16 @@ public class BazelProtoLibrary implements RuleConfiguredTargetFactory { ProtoSourcesProvider.create( transitiveImports, transitiveImports, protoSources, checkDepsProtoSources); + NestedSet<Artifact> protosInDirectDeps = + ruleContext.attributes().get("strict_proto_deps", BOOLEAN) + ? ProtoCommon.computeProtosInDirectDeps(ruleContext) + : null; + final SupportData supportData = SupportData.create( Predicates.<TransitiveInfoCollection>alwaysTrue() /* nonWeakDepsPredicate */, protoSources, - null /* protosInDirectDeps */, + protosInDirectDeps, transitiveImports, !protoSources.isEmpty()); @@ -74,7 +80,7 @@ public class BazelProtoLibrary implements RuleConfiguredTargetFactory { descriptorSetOutput.getExecPathString(), checkDepsProtoSources, transitiveImports, - null /* protosInDirectDeps */, + protosInDirectDeps, ImmutableList.of(descriptorSetOutput), true /* allowServices */); |