aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2016-04-18 20:44:30 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-04-19 09:46:41 +0000
commit3ee570fc8bdd54eeb0c041645dbe7789bdcb3d8b (patch)
tree6e5a83bca609b6e1fb5de94e6ddc0e5d6d1dbfb3 /src/main/java/com/google/devtools/build/lib/rules
parent08fb617b7e853e05a7536e9d078d46c4c040bb5e (diff)
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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java43
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java111
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaToolchain.java10
7 files changed, 58 insertions, 176 deletions
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 159f00d523..e3e10c72a2 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 @@ public final class AndroidRuleClasses {
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 ea59767ea4..6bc5bc9026 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 @@ public class BaseJavaCompilationHelper {
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 @@ public class BaseJavaCompilationHelper {
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 @@ public class BaseJavaCompilationHelper {
* 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 @@ public class BaseJavaCompilationHelper {
*/
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 8791145cf3..45377b1a91 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 @@ public final class JavaCompilationHelper extends BaseJavaCompilationHelper {
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 @@ public final class JavaCompilationHelper extends BaseJavaCompilationHelper {
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 @@ public final class JavaCompilationHelper extends BaseJavaCompilationHelper {
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 151542affa..8036b9cd2b 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 @@ public final class JavaConfiguration extends Fragment {
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 @@ public final class JavaConfiguration extends Fragment {
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 @@ public final class JavaConfiguration extends Fragment {
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 @@ public final class JavaConfiguration extends Fragment {
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 @@ public final class JavaConfiguration extends Fragment {
}
/**
- * 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 @@ public final class JavaConfiguration extends Fragment {
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 430ce24801..a23f0b4f3c 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 @@ import java.util.Set;
* 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 @@ public class JavaOptions extends FragmentOptions {
+ "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 @@ public class JavaOptions extends FragmentOptions {
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 @@ public class JavaOptions extends FragmentOptions {
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 @@ public class JavaOptions extends FragmentOptions {
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 cd54d70f9d..12ef7ddb42 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 @@ public interface JavaSemantics {
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 e9eaf7e782..651ba7ec6a 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 @@ public final class JavaToolchain implements RuleConfiguredTargetFactory {
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 @@ public final class JavaToolchain implements RuleConfiguredTargetFactory {
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) {