Deprecate top-level Java toolchain flags in favour of java_toolchain
This change disables --java_langtools, --javabuilder_top, --singlejar_top,
--genclass_top, and --ijar_top, and finishes replacing them with
java_toolchain.{javac,javabuilder,singlejar,genclass,ijar}.
RELNOTES: Replace --java_langtools, --javabuilder_top, --singlejar_top,
--genclass_top, and --ijar_top with
java_toolchain.{javac,javabuilder,singlejar,genclass,ijar}
--
MOS_MIGRATED_REVID=120154954
diff --git a/scripts/bootstrap/bootstrap.sh b/scripts/bootstrap/bootstrap.sh
index 2fea800..1394b62 100755
--- a/scripts/bootstrap/bootstrap.sh
+++ b/scripts/bootstrap/bootstrap.sh
@@ -30,10 +30,7 @@
: ${JAVA_VERSION:="1.8"}
-: ${BAZEL_ARGS:=--singlejar_top=//src/java_tools/singlejar:bootstrap_deploy.jar \
- --javabuilder_top=//src/java_tools/buildjar:bootstrap_deploy.jar \
- --genclass_top=//src/java_tools/buildjar:bootstrap_genclass_deploy.jar \
- --ijar_top=//third_party/ijar \
+: ${BAZEL_ARGS:=--java_toolchain=//src/java_tools/buildjar:bootstrap_toolchain \
--strategy=Javac=worker --worker_quit_after_build \
--genrule_strategy=standalone --spawn_strategy=standalone \
"${EXTRA_BAZEL_ARGS:-}"}
diff --git a/site/docs/bazel-user-manual.html b/site/docs/bazel-user-manual.html
index 0fb1fa2..2f24233 100644
--- a/site/docs/bazel-user-manual.html
+++ b/site/docs/bazel-user-manual.html
@@ -686,8 +686,7 @@
<code class='flag'>--compiler</code>,
<code class='flag'>--thin_archives</code>,
<code class='flag'>--use_ijars</code>,
- <code class='flag'>--java_langtools</code>,
- <code class='flag'>--javabuilder_top</code>.
+ <code class='flag'>--java_toolchain</code>,
If <code class='flag'>--host_crosstool_top</code> is used, then the value of
<code class='flag'>--host_cpu</code> is used to look up a
<code>default_toolchain</code> in the Crosstool
@@ -1714,18 +1713,12 @@
glibc version, and target CPU are allowed.
</p>
-<h4 id='flag--javabuilder_top'><code class='flag'>--javabuilder_top <var>label</var></code></h4>
+<h4 id='flag--java_toolchain'><code class='flag'>--java_toolchain <var>label</var></code></h4>
<p>
- This option specifies the label of the JavaBuilder used to compile Java
+ This option specifies the label of the java_toolchain used to compile Java
source files.
</p>
-<h4 id='flag--java_langtools'><code class='flag'>--java_langtools <var>label</var></code></h4>
-<p>
- This option specifies the label of the Java langtools jar (used by
- Java compilation tools, for example JavaBuilder).
-</p>
-
<h4 id='flag--javabase'><code class='flag'>--javabase (<var>path</var>|<var>label</var>)</code></h4>
<p>
This options set the label or the path of the base Java installation to use
@@ -1739,26 +1732,8 @@
<p>
This does not select the Java compiler that is used to compile Java
source files. The compiler can be selected by settings the
- <a href="#flag--java_langtools"><code class='flag'>--java_langtools</code></a>
- and the
- <a href="#flag--javabuilder_top"><code class='flag'>--javabuilder_top</code></a>
- options.
-</p>
-
-<h4 id='flag--javac_bootclasspath'><code class='flag'>--javac_bootclasspath <var>label</var></code></h4>
-<p>
- This option specifies the label of the bootstrap classes that Java code
- should be compiled against. This option should always be set together with
- <a href="#flag--javac_extdir"><code class='flag'>--javac_extdir</code></a>
- when cross-compiling to a different Java platform version.
-</p>
-
-<h4 id='flag--javac_extdir'><code class='flag'>--javac_extdir <var>label</var></code></h4>
-<p>
- This option specifies the label of the extension classes that Java code
- should be compiled against. This option should always be set together with
- <a href="#flag--javac_bootclasspath"><code class='flag'>--javac_bootclasspath</code></a>
- when cross-compiling to a different Java platform version.
+ <a href="#flag--java_toolchain"><code class='flag'>--java_toolchain</code></a>
+ option.
</p>
<h3 id='strategy-options'>Build strategy options</h3>
diff --git a/src/java_tools/buildjar/BUILD b/src/java_tools/buildjar/BUILD
index 4871bfc..f7f53a7 100644
--- a/src/java_tools/buildjar/BUILD
+++ b/src/java_tools/buildjar/BUILD
@@ -36,3 +36,19 @@
],
visibility = ["//src:__pkg__"],
)
+
+java_toolchain(
+ name = "bootstrap_toolchain",
+ bootclasspath = ["//tools/jdk:bootclasspath"],
+ encoding = "UTF-8",
+ extclasspath = ["//tools/jdk:extdir"],
+ genclass = ["bootstrap_genclass_deploy.jar"],
+ ijar = ["//third_party/ijar"],
+ javabuilder = ["bootstrap_deploy.jar"],
+ javac = ["//third_party/java/jdk/langtools:javac_jar"],
+ jvm_opts = ["-client"],
+ singlejar = ["//src/java_tools/singlejar:bootstrap_deploy.jar"],
+ source_version = "8",
+ target_version = "8",
+ visibility = ["//visibility:public"],
+)
diff --git a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD
index c724c95..c9c6b24 100644
--- a/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD
+++ b/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/BUILD
@@ -96,7 +96,7 @@
"//third_party:jsr305-jars",
"//third_party/protobuf:protobuf-jars",
],
- neverlink_jars = ["//tools/defaults:java_langtools"],
+ neverlink_jars = ["//third_party/java/jdk/langtools:javac_jar"],
srcjars = [
"//src/main/protobuf:deps_java_proto_srcjar",
"//src/main/protobuf:worker_protocol_java_proto_srcjar",
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index fdae707..ecf9acf 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -986,7 +986,7 @@
bootstrap_java_library(
name = "shell-skylark",
srcs = glob(["shell/*.java"]),
- jars = ["//third_party:guava"],
+ jars = ["//third_party:guava-jars"],
)
########################################################################
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
index 96f9a1c..c0b5bfc 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java
@@ -94,15 +94,12 @@
JavaOptions javaOptions = options.getOptions(JavaOptions.class);
ImmutableList.Builder<String> labelsToLoad = new ImmutableList.Builder<String>()
.addAll(options.getResidue());
- if (String.valueOf(javaOptions.javaLangtoolsJar).equals(
- runtime.getRuleClassProvider().getToolsRepository() + JavaOptions.DEFAULT_LANGTOOLS)) {
- labelsToLoad.add(javaOptions.javaBase);
- } else {
- // TODO(kchodroow): Remove this when OS X isn't as hacky about finding the JVM. Our test
- // framework currently doesn't set up the JDK normally on OS X, so attempting to fetch
- // tools/jdk:jdk will cause errors.
- labelsToLoad.add(String.valueOf(javaOptions.javaToolchain));
- }
+
+ // TODO(kchodorow): Remove this when OS X isn't as hacky about finding the JVM. Our test
+ // framework currently doesn't set up the JDK normally on OS X, so attempting to fetch
+ // tools/jdk:jdk will cause errors.
+ labelsToLoad.add(String.valueOf(javaOptions.javaToolchain));
+
String query = Joiner.on(" union ").join(labelsToLoad.build());
query = "deps(" + query + ")";
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 0cfe2bd..f88bff8 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
@@ -74,7 +74,6 @@
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
return builder
- .add(attr("$ijar", LABEL).cfg(HOST).exec().value(env.getLabel("//tools/defaults:ijar")))
.add(
attr(":java_toolchain", LABEL)
.allowedRuleClasses("java_toolchain")
@@ -102,18 +101,6 @@
return builder
.add(attr(":jvm", LABEL).cfg(HOST).value(JavaSemantics.JVM))
.add(attr(":host_jdk", LABEL).cfg(HOST).value(JavaSemantics.HOST_JDK))
- .add(attr("$javac_extdir", LABEL).cfg(HOST)
- .value(env.getLabel(JavaSemantics.JAVAC_EXTDIR_LABEL)))
- .add(attr("$java_langtools", LABEL).cfg(HOST)
- .value(env.getLabel("//tools/defaults:java_langtools")))
- .add(attr("$javac_bootclasspath", LABEL).cfg(HOST)
- .value(env.getLabel(JavaSemantics.JAVAC_BOOTCLASSPATH_LABEL)))
- .add(attr("$javabuilder", LABEL).cfg(HOST)
- .value(env.getLabel(JavaSemantics.JAVABUILDER_LABEL)))
- .add(attr("$singlejar", LABEL).cfg(HOST)
- .value(env.getLabel(JavaSemantics.SINGLEJAR_LABEL)))
- .add(attr("$genclass", LABEL).cfg(HOST)
- .value(env.getLabel(JavaSemantics.GENCLASS_LABEL)))
.add(attr("$jacoco_instrumentation", LABEL).cfg(HOST))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 159f00d..e3e10c7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -370,10 +370,6 @@
attr(":java_toolchain", LABEL)
.allowedRuleClasses("java_toolchain")
.value(JavaSemantics.JAVA_TOOLCHAIN))
- .add(
- attr("$javac_bootclasspath", LABEL)
- .cfg(HOST)
- .value(environment.getLabel(JavaSemantics.JAVAC_BOOTCLASSPATH_LABEL)))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
index ea59767..6bc5bc9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
@@ -57,33 +57,6 @@
return AnalysisUtils.getMiddlemanFor(ruleContext, ":host_jdk" + implicitAttributesSuffix);
}
- /** Returns the langtools jar Artifact. */
- protected final Artifact getLangtoolsJar() {
- Artifact javac = javaToolchain.getJavac();
- if (javac != null) {
- return javac;
- }
- return ruleContext.getHostPrerequisiteArtifact("$java_langtools" + implicitAttributesSuffix);
- }
-
- /** Returns the JavaBuilder jar Artifact. */
- protected final Artifact getJavaBuilderJar() {
- Artifact javaBuilder = javaToolchain.getJavaBuilder();
- if (javaBuilder != null) {
- return javaBuilder;
- }
- return ruleContext.getPrerequisiteArtifact(
- "$javabuilder" + implicitAttributesSuffix, Mode.HOST);
- }
-
- protected FilesToRunProvider getIJar() {
- FilesToRunProvider ijar = javaToolchain.getIjar();
- if (ijar != null) {
- return ijar;
- }
- return ruleContext.getExecutablePrerequisite("$ijar" + implicitAttributesSuffix, Mode.HOST);
- }
-
/**
* Returns the instrumentation jar in the given semantics.
*/
@@ -105,12 +78,7 @@
RuleContext ruleContext,
JavaToolchainProvider javaToolchain,
String implicitAttributesSuffix) {
- NestedSet<Artifact> toolchainBootclasspath = javaToolchain.getBootclasspath();
- if (toolchainBootclasspath != null) {
- return ImmutableList.copyOf(toolchainBootclasspath);
- }
- return ruleContext.getPrerequisiteArtifacts(
- "$javac_bootclasspath" + implicitAttributesSuffix, Mode.HOST).list();
+ return ImmutableList.copyOf(javaToolchain.getBootclasspath());
}
/**
@@ -124,12 +92,7 @@
* Returns the extdir artifacts.
*/
protected final ImmutableList<Artifact> getExtdirInputs() {
- NestedSet<Artifact> toolchainExtclasspath = javaToolchain.getExtclasspath();
- if (toolchainExtclasspath != null) {
- return ImmutableList.copyOf(toolchainExtclasspath);
- }
- return ruleContext.getPrerequisiteArtifacts(
- "$javac_extdir" + implicitAttributesSuffix, Mode.HOST).list();
+ return ImmutableList.copyOf(javaToolchain.getExtclasspath());
}
private Artifact getIjarArtifact(Artifact jar, boolean addPrefix) {
@@ -155,7 +118,7 @@
*/
protected Artifact createIjarAction(Artifact inputJar, boolean addPrefix) {
Artifact interfaceJar = getIjarArtifact(inputJar, addPrefix);
- FilesToRunProvider ijarTarget = getIJar();
+ FilesToRunProvider ijarTarget = javaToolchain.getIjar();
if (!ruleContext.hasErrors()) {
ruleContext.registerAction(new SpawnAction.Builder()
.addInput(inputJar)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index 8791145..45377b1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -134,8 +134,8 @@
builder.addClasspathResources(attributes.getClassPathResources());
builder.setBootclasspathEntries(getBootclasspathOrDefault());
builder.setExtdirInputs(getExtdirInputs());
- builder.setLangtoolsJar(getLangtoolsJar());
- builder.setJavaBuilderJar(getJavaBuilderJar());
+ builder.setLangtoolsJar(javaToolchain.getJavac());
+ builder.setJavaBuilderJar(javaToolchain.getJavaBuilder());
builder.addTranslations(getTranslations());
builder.setOutputJar(outputJar);
builder.setManifestProtoOutput(manifestProtoOutput);
@@ -280,7 +280,7 @@
builder.setRuleKind(attributes.getRuleKind());
builder.setTargetLabel(attributes.getTargetLabel());
builder.setJavaBaseInputs(getHostJavabaseInputsNonStatic(ruleContext));
- builder.setJavacJar(getLangtoolsJar());
+ builder.setJavacJar(javaToolchain.getJavac());
builder.build();
artifactBuilder.setCompileTimeDependencies(headerDeps);
@@ -418,12 +418,12 @@
builder.addResources(attributes.getResources());
builder.addClasspathResources(attributes.getClassPathResources());
builder.setExtdirInputs(getExtdirInputs());
- builder.setLangtoolsJar(getLangtoolsJar());
+ builder.setLangtoolsJar(javaToolchain.getJavac());
builder.addTranslations(getTranslations());
builder.setCompressJar(true);
builder.setTempDirectory(tempDir(resourceJar));
builder.setClassDirectory(classDir(resourceJar));
- builder.setJavaBuilderJar(getJavaBuilderJar());
+ builder.setJavaBuilderJar(javaToolchain.getJavaBuilder());
builder.setJavacOpts(getDefaultJavacOptsFromRule(getRuleContext()));
builder.setJavacJvmOpts(javaToolchain.getJavacJvmOptions());
getAnalysisEnvironment().registerAction(builder.build());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
index 151542a..8036b9c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java
@@ -126,8 +126,6 @@
private final ImmutableList<String> commandLineJavacFlags;
private final Label javaLauncherLabel;
- private final Label javaBuilderTop;
- private final Label javaLangtoolsJar;
private final boolean useIjars;
private final boolean useHeaderCompilation;
private final boolean generateJavaDeps;
@@ -136,8 +134,6 @@
private final ImmutableList<String> defaultJvmFlags;
private final ImmutableList<String> checkedConstraints;
private final StrictDepsMode strictJavaDeps;
- private final Label javacBootclasspath;
- private final Label javacExtdir;
private final ImmutableList<String> javacOpts;
private final Label proguardBinary;
private final ImmutableList<Label> extraProguardSpecs;
@@ -156,8 +152,6 @@
this.commandLineJavacFlags =
ImmutableList.copyOf(JavaHelper.tokenizeJavaOptions(javaOptions.javacOpts));
this.javaLauncherLabel = javaOptions.javaLauncher;
- this.javaBuilderTop = javaOptions.javaBuilderTop;
- this.javaLangtoolsJar = javaOptions.javaLangtoolsJar;
this.useIjars = javaOptions.useIjars;
this.useHeaderCompilation = javaOptions.headerCompilation;
this.generateJavaDeps = generateJavaDeps;
@@ -166,8 +160,6 @@
this.defaultJvmFlags = ImmutableList.copyOf(defaultJvmFlags);
this.checkedConstraints = ImmutableList.copyOf(javaOptions.checkedConstraints);
this.strictJavaDeps = javaOptions.strictJavaDeps;
- this.javacBootclasspath = javaOptions.javacBootclasspath;
- this.javacExtdir = javaOptions.javacExtdir;
this.javacOpts = ImmutableList.copyOf(javaOptions.javacOpts);
this.proguardBinary = javaOptions.proguard;
this.extraProguardSpecs = ImmutableList.copyOf(javaOptions.extraProguardSpecs);
@@ -213,20 +205,6 @@
}
/**
- * Returns the default javabuilder jar
- */
- public Label getDefaultJavaBuilderJar() {
- return javaBuilderTop;
- }
-
- /**
- * Returns the default java langtools jar
- */
- public Label getDefaultJavaLangtoolsJar() {
- return javaLangtoolsJar;
- }
-
- /**
* Returns true iff Java compilation should use ijars.
*/
public boolean getUseIjars() {
@@ -286,14 +264,6 @@
return javaLauncherLabel;
}
- public Label getJavacBootclasspath() {
- return javacBootclasspath;
- }
-
- public Label getJavacExtdir() {
- return javacExtdir;
- }
-
public ImmutableList<String> getJavacOpts() {
return javacOpts;
}
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 430ce24..a23f0b4 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
@@ -41,7 +41,6 @@
* Command-line options for building Java targets
*/
public class JavaOptions extends FragmentOptions {
- public static final String DEFAULT_LANGTOOLS = "//tools/jdk:langtools";
/**
* Converter for the --javawarn option.
@@ -223,54 +222,61 @@
+ "targets as dependencies.")
public StrictDepsMode strictJavaDeps;
- @Option(name = "javabuilder_top",
- defaultValue = "@bazel_tools//tools/jdk:JavaBuilder_deploy.jar",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the filegroup that contains the JavaBuilder jar.")
- public Label javaBuilderTop;
+ @Option(
+ name = "javabuilder_top",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String javaBuilderTop;
- @Option(name = "singlejar_top",
- defaultValue = "@bazel_tools//tools/jdk:SingleJar_deploy.jar",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the filegroup that contains the SingleJar jar.")
- public Label singleJarTop;
+ @Option(
+ name = "singlejar_top",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String singleJarTop;
- @Option(name = "genclass_top",
- defaultValue = "@bazel_tools//tools/jdk:GenClass_deploy.jar",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the filegroup that contains the GenClass jar.")
- public Label genClassTop;
+ @Option(
+ name = "genclass_top",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String genClassTop;
- @Option(name = "ijar_top",
- defaultValue = "@bazel_tools//tools/jdk:ijar",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the filegroup that contains the ijar binary.")
- public Label iJarTop;
+ @Option(
+ name = "ijar_top",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String iJarTop;
- @Option(name = "java_langtools",
- defaultValue = "@bazel_tools" + DEFAULT_LANGTOOLS,
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the rule that produces the Java langtools jar.")
- public Label javaLangtoolsJar;
+ @Option(
+ name = "java_langtools",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String javaLangtoolsJar;
- @Option(name = "javac_bootclasspath",
- defaultValue = "@bazel_tools//tools/jdk:bootclasspath",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the rule that produces the bootclasspath jars for javac to use.")
- public Label javacBootclasspath;
+ @Option(
+ name = "javac_bootclasspath",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String javacBootclasspath;
- @Option(name = "javac_extdir",
- defaultValue = "@bazel_tools//tools/jdk:extdir",
- category = "version",
- converter = LabelConverter.class,
- help = "Label of the rule that produces the extdir for javac to use.")
- public Label javacExtdir;
+ @Option(
+ name = "javac_extdir",
+ defaultValue = "null",
+ category = "undocumented",
+ help = "No-op. Kept here for backwards compatibility."
+ )
+ public String javacExtdir;
@Option(name = "java_launcher",
defaultValue = "null",
@@ -345,16 +351,8 @@
host.jvmOpts = ImmutableList.of("-client", "-XX:ErrorFile=/dev/stderr");
host.javacOpts = javacOpts;
- host.javaLangtoolsJar = javaLangtoolsJar;
- host.javacExtdir = javacExtdir;
- host.headerCompilation = headerCompilation;
- host.javaBuilderTop = javaBuilderTop;
// TODO(cushon): switch to hostJavaToolchain after cl/118829419 makes a blaze release
host.javaToolchain = javaToolchain;
- host.singleJarTop = singleJarTop;
- host.genClassTop = genClassTop;
- host.iJarTop = iJarTop;
- host.javacBootclasspath = javacBootclasspath;
// Java builds often contain complicated code generators for which
// incremental build performance is important.
@@ -373,10 +371,6 @@
if (javaLauncher != null) {
labelMap.put("java_launcher", javaLauncher);
}
- labelMap.put("javabuilder", javaBuilderTop);
- labelMap.put("singlejar", singleJarTop);
- labelMap.put("genclass", genClassTop);
- labelMap.put("ijar", iJarTop);
labelMap.put("java_toolchain", javaToolchain);
labelMap.putAll("translation", getTranslationLabels());
}
@@ -388,13 +382,6 @@
DefaultsPackage.parseAndAdd(jdkLabels, hostJavaBase);
Map<String, Set<Label>> result = new HashMap<>();
result.put("JDK", jdkLabels);
- result.put("JAVA_LANGTOOLS", ImmutableSet.of(javaLangtoolsJar));
- result.put("JAVAC_BOOTCLASSPATH", ImmutableSet.of(javacBootclasspath));
- result.put("JAVAC_EXTDIR", ImmutableSet.of(javacExtdir));
- result.put("JAVABUILDER", ImmutableSet.of(javaBuilderTop));
- result.put("SINGLEJAR", ImmutableSet.of(singleJarTop));
- result.put("GENCLASS", ImmutableSet.of(genClassTop));
- result.put("IJAR", ImmutableSet.of(iJarTop));
result.put("JAVA_TOOLCHAIN", ImmutableSet.of(javaToolchain));
return result;
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 cd54d70..12ef7dd 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
@@ -111,32 +111,6 @@
OutputGroupProvider.HIDDEN_OUTPUT_GROUP_PREFIX + "gen_jars";
/**
- * Label of a pseudo-filegroup that contains the boot-classpath entries.
- */
- String JAVAC_BOOTCLASSPATH_LABEL = "//tools/defaults:javac_bootclasspath";
-
- /**
- * Label of the javac extdir used for compiling Java source code.
- */
- String JAVAC_EXTDIR_LABEL = "//tools/defaults:javac_extdir";
-
- /**
- * Label of the JavaBuilder JAR used for compiling Java source code.
- */
- String JAVABUILDER_LABEL = "//tools/defaults:javabuilder";
-
- /**
- * Label of the SingleJar JAR used for creating deploy jars.
- */
- String SINGLEJAR_LABEL = "//tools/defaults:singlejar";
-
- /**
- * Label of the GenClass JAR used for creating the jar for classes from sources generated from
- * annotation processors.
- */
- String GENCLASS_LABEL = "//tools/defaults:genclass";
-
- /**
* Label of pseudo-cc_binary that tells Blaze a java target's JAVABIN is never to be replaced by
* the contents of --java_launcher; only the JDK's launcher will ever be used.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java
index e9eaf7e..651ba7e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java
@@ -52,7 +52,7 @@
Artifact headerCompiler = getArtifact("header_compiler", ruleContext);
Artifact singleJar = getArtifact("singlejar", ruleContext);
Artifact genClass = getArtifact("genclass", ruleContext);
- FilesToRunProvider ijar = getExecutable("ijar", ruleContext);
+ FilesToRunProvider ijar = ruleContext.getExecutablePrerequisite("ijar", Mode.HOST);
// TODO(cushon): clean up nulls once migration from --javac_bootclasspath and --javac_extdir
// is complete, and java_toolchain.{bootclasspath,extclasspath} are mandatory
final JavaToolchainData toolchainData =
@@ -91,14 +91,6 @@
return artifacts != null ? Artifact.toExecPaths(artifacts) : null;
}
- private FilesToRunProvider getExecutable(String attributeName, RuleContext ruleContext) {
- TransitiveInfoCollection prerequisite = ruleContext.getPrerequisite(attributeName, Mode.HOST);
- if (prerequisite == null) {
- return null;
- }
- return prerequisite.getProvider(FilesToRunProvider.class);
- }
-
private Artifact getArtifact(String attributeName, RuleContext ruleContext) {
TransitiveInfoCollection prerequisite = ruleContext.getPrerequisite(attributeName, Mode.HOST);
if (prerequisite == null) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 20b8796..2ac21a7 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -88,8 +88,20 @@
config.create(
"/bazel_tools_workspace/tools/jdk/BUILD",
"package(default_visibility=['//visibility:public'])",
- "java_toolchain(name = 'toolchain', encoding = 'UTF-8', source_version = '8', ",
- " target_version = '8')",
+ "java_toolchain(",
+ " name = 'toolchain',",
+ " encoding = 'UTF-8',",
+ " source_version = '8',",
+ " target_version = '8',",
+ " bootclasspath = [':bootclasspath'],",
+ " extclasspath = [':extclasspath'],",
+ " javac = [':langtools'],",
+ " javabuilder = ['JavaBuilder_deploy.jar'],",
+ " header_compiler = ['turbine_deploy.jar'],",
+ " singlejar = ['SingleJar_deploy.jar'],",
+ " genclass = ['GenClass_deploy.jar'],",
+ " ijar = ['ijar'],",
+ ")",
"filegroup(name = 'jdk-null')",
"filegroup(name = 'jdk-default', srcs = [':java'], path = 'jdk/jre')",
"filegroup(name = 'jdk', srcs = [':jdk-default', ':jdk-null'])",
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
index d475322..beec598 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java
@@ -71,6 +71,8 @@
" outs = ['d.txt'])",
"java_library(name = 'jl',",
" srcs = ['a.java'])",
+ "android_library(name = 'androidlib',",
+ " srcs = ['a.java'])",
"java_import(name = 'asr',",
" jars = [ 'asr.jar' ],",
" srcjar = 'asr-src.jar',",
@@ -604,26 +606,26 @@
@Test
public void testGetExecutablePrerequisite() throws Exception {
- SkylarkRuleContext ruleContext = createRuleContext("//foo:jl");
- Object result = evalRuleContextCode(ruleContext, "ruleContext.executable._ijar");
- assertEquals("ijar", ((Artifact) result).getFilename());
+ SkylarkRuleContext ruleContext = createRuleContext("//foo:androidlib");
+ Object result = evalRuleContextCode(ruleContext, "ruleContext.executable._jarjar_bin");
+ assertEquals("jarjar_bin", ((Artifact) result).getFilename());
}
@Test
public void testCreateSpawnActionArgumentsWithExecutableFilesToRunProvider() throws Exception {
- SkylarkRuleContext ruleContext = createRuleContext("//foo:jl");
+ SkylarkRuleContext ruleContext = createRuleContext("//foo:androidlib");
evalRuleContextCode(
ruleContext,
"ruleContext.action(\n"
+ " inputs = ruleContext.files.srcs,\n"
+ " outputs = ruleContext.files.srcs,\n"
+ " arguments = ['--a','--b'],\n"
- + " executable = ruleContext.executable._ijar)\n");
+ + " executable = ruleContext.executable._jarjar_bin)\n");
SpawnAction action =
(SpawnAction)
Iterables.getOnlyElement(
ruleContext.getRuleContext().getAnalysisEnvironment().getRegisteredActions());
- assertThat(action.getCommandFilename()).endsWith("/ijar");
+ assertThat(action.getCommandFilename()).endsWith("/jarjar_bin");
}
@Test
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 2e66d24..2762c98 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -3,7 +3,7 @@
genrule(
name = "langtools-copy",
testonly = 1,
- srcs = ["//tools/defaults:java_langtools"],
+ srcs = ["//third_party/java/jdk/langtools:javac_jar"],
outs = ["langtools.jar"],
cmd = "cp $< $@",
)
diff --git a/src/test/shell/bazel/testenv.sh b/src/test/shell/bazel/testenv.sh
index 0b0054b..82b7203 100755
--- a/src/test/shell/bazel/testenv.sh
+++ b/src/test/shell/bazel/testenv.sh
@@ -38,7 +38,7 @@
# Tools directory location
tools_dir="${TEST_SRCDIR}/tools"
langtools_dir="${TEST_SRCDIR}/third_party/java/jdk/langtools"
-EXTRA_BAZELRC="build --java_langtools=//tools/jdk:test-langtools --ios_sdk_version=8.4"
+EXTRA_BAZELRC="build --ios_sdk_version=8.4"
# Java tooling
javabuilder_path="${TEST_SRCDIR}/src/java_tools/buildjar/JavaBuilder_deploy.jar"
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index 50feeb0..5e5fc19 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -96,8 +96,15 @@
java_toolchain(
name = "toolchain",
+ bootclasspath = [":bootclasspath"],
encoding = "UTF-8",
+ extclasspath = [":extdir"],
+ genclass = ["//tools/jdk:GenClass_deploy.jar"],
+ ijar = ["@bazel_tools//tools/jdk:ijar"],
+ javabuilder = ["//tools/jdk:JavaBuilder_deploy.jar"],
+ javac = ["//third_party/java/jdk/langtools:javac_jar"],
jvm_opts = ["-client"],
+ singlejar = ["//tools/jdk:SingleJar_deploy.jar"],
source_version = "8",
target_version = "8",
)