diff options
author | 2016-04-18 20:44:30 +0000 | |
---|---|---|
committer | 2016-04-19 09:46:41 +0000 | |
commit | 3ee570fc8bdd54eeb0c041645dbe7789bdcb3d8b (patch) | |
tree | 6e5a83bca609b6e1fb5de94e6ddc0e5d6d1dbfb3 /src/main/java/com/google/devtools/build/lib/rules | |
parent | 08fb617b7e853e05a7536e9d078d46c4c040bb5e (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')
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) { |