diff options
author | 2018-04-09 13:49:25 -0700 | |
---|---|---|
committer | 2018-04-09 13:50:30 -0700 | |
commit | 1a77a347ca87dfa31158e94420cae3863777cc74 (patch) | |
tree | 8543cafd603f5048dde6309343eacbd333863c1b /src | |
parent | f5037d3ff0d8efb84263b6de5ce7d41dd065da9b (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.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/java/OneVersionCheckActionBuilder.java | 19 |
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); } |