aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-04-09 13:49:25 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-09 13:50:30 -0700
commit1a77a347ca87dfa31158e94420cae3863777cc74 (patch)
tree8543cafd603f5048dde6309343eacbd333863c1b /src
parentf5037d3ff0d8efb84263b6de5ce7d41dd065da9b (diff)
Add a ruleError when one version enforcement is requested without the requisite
one_version_whitelist attribution on the java_toolchain. Fixes bazelbuild/bazel#4682 RELNOTES: n/a PiperOrigin-RevId: 192181587
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java19
2 files changed, 19 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
index ffac9f8460..7d958cf879 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/DeployArchiveBuilder.java
@@ -264,6 +264,8 @@ public class DeployArchiveBuilder {
}
if (oneVersionEnforcementLevel != OneVersionEnforcementLevel.OFF && usingNativeSinglejar) {
args.add("--enforce_one_version");
+ // RuleErrors should have been added in Builder.build() before this command
+ // line is invoked.
Preconditions.checkNotNull(oneVersionWhitelistArtifact);
args.addExecPath("--one_version_whitelist", oneVersionWhitelistArtifact);
if (oneVersionEnforcementLevel == OneVersionEnforcementLevel.WARNING) {
@@ -343,6 +345,11 @@ public class DeployArchiveBuilder {
}
if (oneVersionEnforcementLevel != OneVersionEnforcementLevel.OFF) {
+ if (oneVersionWhitelistArtifact == null) {
+ OneVersionCheckActionBuilder.addRuleErrorForMissingArtifacts(
+ ruleContext, JavaToolchainProvider.from(ruleContext));
+ return;
+ }
inputs.add(oneVersionWhitelistArtifact);
}
// If singlejar's name ends with .jar, it is Java application, otherwise it is native.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java
index 38f1827373..7d1cba123a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java
@@ -78,13 +78,7 @@ public final class OneVersionCheckActionBuilder {
Artifact oneVersionTool = javaToolchain.getOneVersionBinary();
Artifact oneVersionWhitelist = javaToolchain.getOneVersionWhitelist();
if (oneVersionTool == null || oneVersionWhitelist == null) {
- ruleContext.ruleError(
- String.format(
- "one version enforcement was requested but it is not supported by the current "
- + "Java toolchain '%s'; see the "
- + "java_toolchain.oneversion and java_toolchain.oneversion_whitelist "
- + "attributes",
- javaToolchain.getToolchainLabel()));
+ addRuleErrorForMissingArtifacts(ruleContext, javaToolchain);
return outputArtifact;
}
@@ -112,6 +106,17 @@ public final class OneVersionCheckActionBuilder {
return outputArtifact;
}
+ public static void addRuleErrorForMissingArtifacts(
+ RuleContext ruleContext, JavaToolchainProvider javaToolchain) {
+ ruleContext.ruleError(
+ String.format(
+ "one version enforcement was requested but it is not supported by the current "
+ + "Java toolchain '%s'; see the "
+ + "java_toolchain.oneversion and java_toolchain.oneversion_whitelist "
+ + "attributes",
+ javaToolchain.getToolchainLabel()));
+ }
+
static VectorArg<String> jarAndTargetVectorArg(NestedSet<Artifact> jarsToCheck) {
return VectorArg.of(jarsToCheck).mapped(EXPAND_TO_JAR_AND_TARGET);
}