aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2016-11-23 23:34:22 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-11-24 10:33:00 +0000
commit0c5c3484d3b717cdafe4a2983375cedae32989c0 (patch)
tree661093d6344b0db21c3f067452f16e3d1e4d076d /src/main/java/com/google/devtools/build/lib/rules/proto/BazelProtoLibrary.java
parent64de4b555a93aa9779cbf54aa1202193a4ed76a5 (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.java14
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 */);