aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-08-16 19:02:40 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-08-17 11:26:13 +0000
commitd8e0037460cedf383d074d56108e83dbdbe9c408 (patch)
tree9ebe0afc0605dc37e965cd6be48515bebfdb1b8c /src/main/java/com/google/devtools/build
parent03e4f9c1f8768ff0e01d87d104d46c6173a78340 (diff)
*** Reason for rollback *** Broke exoblaze build This is a partial rollback: changes to mocks, and to allow running java tests with the launcher enabled and disabled were left in. *** Original change description *** Roll forward commit 94c86135d05a1844263c59f3ce6b1c1917e0f4c8 And don't provide a default value for :java_launcher -- MOS_MIGRATED_REVID=130429620
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-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/JavaSemantics.java17
4 files changed, 29 insertions, 33 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 d47723828a..e3d59df802 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,11 +30,8 @@ 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;
@@ -44,7 +41,6 @@ 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;
@@ -61,22 +57,6 @@ 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,
@@ -407,7 +387,7 @@ public class BazelJavaRuleClasses {
attr("launcher", LABEL)
.allowedFileTypes(FileTypeSet.NO_FILE)
.allowedRuleClasses("cc_binary"))
- .add(attr(":cmdline_launcher", LABEL).value(JAVA_LAUNCHER))
+ .add(attr(":java_launcher", LABEL).value(JavaSemantics.JAVA_LAUNCHER)) // blaze flag
.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 833d76d808..0de34ae90c 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,6 +59,7 @@ 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 d1c625e0b9..e4295674fb 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,21 +68,19 @@ public abstract class JavaHelper {
return null;
}
// BUILD rule "launcher" attribute
- if (ruleContext.getRule().isAttrDefined("launcher", BuildType.LABEL)) {
- Label launcher = ruleContext.attributes().get("launcher", BuildType.LABEL);
- if (launcher != null) {
- return isJdkLauncher(ruleContext, launcher) ? null : "launcher";
+ 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;
}
+ return "launcher";
}
// Blaze flag --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";
+ JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
+ if (ruleContext.getRule().isAttrDefined(":java_launcher", BuildType.LABEL)
+ && javaConfig.getJavaLauncherLabel() != null
+ && !isJdkLauncher(ruleContext, javaConfig.getJavaLauncherLabel())) {
+ return ":java_launcher";
}
return null;
}
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 fa665c44aa..c2f5e7c69b 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,6 +14,7 @@
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;
@@ -142,6 +143,22 @@ 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