aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-08-10 20:03:43 +0000
committerGravatar Yue Gan <yueg@google.com>2016-08-11 09:14:52 +0000
commitcf00c82a394e5a392a55c058ed01483d2e39c3db (patch)
tree8ffa90a1a8fd27f775bbcfa728454eb77c242b41 /src/main/java/com/google/devtools/build/lib
parent33faf91356e0b9d0326f5d0330c2cf7189cf4da1 (diff)
And don't provide a default value for :java_launcher -- MOS_MIGRATED_REVID=129900898
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java17
5 files changed, 42 insertions, 35 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
index e3d59df802..d47723828a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaRuleClasses.java
@@ -30,8 +30,11 @@ import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.PredicateWithMessage;
@@ -41,6 +44,7 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
import com.google.devtools.build.lib.packages.RuleClass.PackageNameConstraint;
import com.google.devtools.build.lib.packages.TriState;
+import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.syntax.Type;
@@ -57,6 +61,22 @@ public class BazelJavaRuleClasses {
protected static final String JUNIT_TESTRUNNER = "//tools/jdk:TestRunner_deploy.jar";
+ /**
+ * Implementation for the :java_launcher attribute. Note that the Java launcher is disabled by
+ * default, so it returns null for the configuration-independent default value.
+ */
+ public static final LateBoundLabel<BuildConfiguration> JAVA_LAUNCHER =
+ new LateBoundLabel<BuildConfiguration>(JavaConfiguration.class) {
+ @Override
+ public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
+ // don't read --java_launcher if this target overrides via a launcher attribute
+ if (attributes != null && attributes.isAttributeValueExplicitlySpecified("launcher")) {
+ return attributes.get("launcher", LABEL);
+ }
+ return configuration.getFragment(JavaConfiguration.class).getJavaLauncherLabel();
+ }
+ };
+
public static final ImplicitOutputsFunction JAVA_BINARY_IMPLICIT_OUTPUTS =
fromFunctions(
JavaSemantics.JAVA_BINARY_CLASS_JAR,
@@ -387,7 +407,7 @@ public class BazelJavaRuleClasses {
attr("launcher", LABEL)
.allowedFileTypes(FileTypeSet.NO_FILE)
.allowedRuleClasses("cc_binary"))
- .add(attr(":java_launcher", LABEL).value(JavaSemantics.JAVA_LAUNCHER)) // blaze flag
+ .add(attr(":cmdline_launcher", LABEL).value(JAVA_LAUNCHER))
.add(
attr("$no_launcher", NODEP_LABEL_LIST)
.value(
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java
index 0de34ae90c..833d76d808 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java
@@ -59,7 +59,6 @@ public final class BazelJavaTestRule implements RuleDefinition {
.add(attr(":extra_proguard_specs", LABEL_LIST).value(JavaSemantics.EXTRA_PROGUARD_SPECS))
.override(attr("stamp", TRISTATE).value(TriState.NO))
.override(attr("use_testrunner", BOOLEAN).value(true))
- .override(attr(":java_launcher", LABEL).value(JavaSemantics.JAVA_LAUNCHER))
// TODO(dmarting): remove once we drop the legacy bazel java_test behavior.
.override(attr("main_class", STRING).value(JUNIT4_RUNNER))
/* <!-- #BLAZE_RULE(java_test).ATTRIBUTE(test_class) -->
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
index e4295674fb..d1c625e0b9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java
@@ -68,19 +68,21 @@ public abstract class JavaHelper {
return null;
}
// BUILD rule "launcher" attribute
- if (ruleContext.getRule().isAttrDefined("launcher", BuildType.LABEL)
- && ruleContext.attributes().get("launcher", BuildType.LABEL) != null) {
- if (isJdkLauncher(ruleContext, ruleContext.attributes().get("launcher", BuildType.LABEL))) {
- return null;
+ if (ruleContext.getRule().isAttrDefined("launcher", BuildType.LABEL)) {
+ Label launcher = ruleContext.attributes().get("launcher", BuildType.LABEL);
+ if (launcher != null) {
+ return isJdkLauncher(ruleContext, launcher) ? null : "launcher";
}
- return "launcher";
}
// Blaze flag --java_launcher
- JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
- if (ruleContext.getRule().isAttrDefined(":java_launcher", BuildType.LABEL)
- && javaConfig.getJavaLauncherLabel() != null
- && !isJdkLauncher(ruleContext, javaConfig.getJavaLauncherLabel())) {
- return ":java_launcher";
+ if (ruleContext.getRule().isAttrDefined("$default_launcher", BuildType.LABEL)) {
+ JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
+ if (javaConfig.getJavaLauncherLabel() != null) {
+ return isJdkLauncher(ruleContext, javaConfig.getJavaLauncherLabel())
+ ? null
+ : ":cmdline_launcher";
+ }
+ return "$default_launcher";
}
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index 0c787bc713..65049fef5f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -282,12 +282,15 @@ public class JavaOptions extends FragmentOptions {
)
public Label hostJavaLauncher;
- @Option(name = "java_launcher",
- defaultValue = "null",
- converter = LabelConverter.class,
- category = "semantics",
- help = "If enabled, a specific Java launcher is used. "
- + "The \"launcher\" attribute overrides this flag. ")
+ @Option(
+ name = "java_launcher",
+ defaultValue = "null",
+ converter = LabelConverter.class,
+ category = "semantics",
+ help =
+ "The Java launcher to use when building Java binaries. "
+ + "The \"launcher\" attribute overrides this flag. "
+ )
public Label javaLauncher;
@Option(name = "proguard_top",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index 2e1435e0a1..c2b5875f49 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.java;
-import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates;
import com.google.common.collect.ImmutableList;
@@ -143,22 +142,6 @@ public interface JavaSemantics {
}
};
- /**
- * Implementation for the :java_launcher attribute. Note that the Java launcher is disabled by
- * default, so it returns null for the configuration-independent default value.
- */
- LateBoundLabel<BuildConfiguration> JAVA_LAUNCHER =
- new LateBoundLabel<BuildConfiguration>(JavaConfiguration.class) {
- @Override
- public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
- // don't read --java_launcher if this target overrides via a launcher attribute
- if (attributes != null && attributes.isAttributeValueExplicitlySpecified("launcher")) {
- return attributes.get("launcher", LABEL);
- }
- return configuration.getFragment(JavaConfiguration.class).getJavaLauncherLabel();
- }
- };
-
LateBoundLabelList<BuildConfiguration> JAVA_PLUGINS =
new LateBoundLabelList<BuildConfiguration>() {
@Override