diff options
author | Liam Miller-Cushon <cushon@google.com> | 2016-08-16 19:02:40 +0000 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2016-08-17 11:26:13 +0000 |
commit | d8e0037460cedf383d074d56108e83dbdbe9c408 (patch) | |
tree | 9ebe0afc0605dc37e965cd6be48515bebfdb1b8c /src/main/java/com/google/devtools/build/lib | |
parent | 03e4f9c1f8768ff0e01d87d104d46c6173a78340 (diff) |
Rollback of commit cf00c82a394e5a392a55c058ed01483d2e39c3db.
*** 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/lib')
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 |