Skip to content

Commit a75f516

Browse files
cushoncopybara-github
authored andcommitted
Add support for passing custom bootclasspaths to java_common.compile
PiperOrigin-RevId: 540402695 Change-Id: I333b43ef3bd744c72cc2d0b51420ab4cfe4620ab
1 parent 4e476b8 commit a75f516

File tree

5 files changed

+26
-6
lines changed

5 files changed

+26
-6
lines changed

src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ public JavaInfo createJavaCompileAction(
264264
List<Artifact> annotationProcessorAdditionalOutputs,
265265
String strictDepsMode,
266266
JavaToolchainProvider javaToolchain,
267+
BootClassPathInfo bootClassPath,
267268
ImmutableList<Artifact> sourcepathEntries,
268269
List<Artifact> resources,
269270
List<Artifact> resourceJars,
@@ -350,6 +351,7 @@ public JavaInfo createJavaCompileAction(
350351
helper.build(
351352
javaSemantics,
352353
toolchainProvider,
354+
bootClassPath,
353355
outputJarsBuilder,
354356
createOutputSourceJar,
355357
includeCompilationInfo,

src/main/java/com/google/devtools/build/lib/rules/java/JavaLibraryHelper.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ public JavaLibraryHelper setCompilationStrictDepsMode(StrictDepsMode strictDepsM
216216
public JavaCompilationArtifacts build(
217217
JavaSemantics semantics,
218218
JavaToolchainProvider javaToolchainProvider,
219+
BootClassPathInfo bootClassPath,
219220
JavaRuleOutputJarsProvider.Builder outputJarsBuilder,
220221
boolean createOutputSourceJar,
221222
boolean includeCompilationInfo,
@@ -232,6 +233,13 @@ public JavaCompilationArtifacts build(
232233
"outputSourceJar cannot be null when createOutputSourceJar is true");
233234

234235
JavaTargetAttributes.Builder attributes = new JavaTargetAttributes.Builder(semantics);
236+
237+
if (bootClassPath != null && !bootClassPath.isEmpty()) {
238+
attributes.setBootClassPath(bootClassPath);
239+
} else {
240+
bootClassPath = javaToolchainProvider.getBootclasspath();
241+
}
242+
235243
attributes.addSourceJars(sourceJars);
236244
attributes.addSourceFiles(sourceFiles);
237245
addDepsToAttributes(attributes);
@@ -296,10 +304,7 @@ public JavaCompilationArtifacts build(
296304
if (javaInfoBuilder != null && includeCompilationInfo) {
297305
ClasspathConfiguredFragment classpathFragment =
298306
new ClasspathConfiguredFragment(
299-
javaArtifacts,
300-
attributes.build(),
301-
neverlink,
302-
javaToolchainProvider.getBootclasspath());
307+
javaArtifacts, attributes.build(), neverlink, bootClassPath);
303308

304309
javaInfoBuilder.javaCompilationInfo(
305310
new JavaCompilationInfoProvider.Builder()

src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public class JavaStarlarkCommon
6666
Artifact,
6767
JavaInfo,
6868
JavaToolchainProvider,
69+
BootClassPathInfo.Provider,
6970
ConstraintValueInfo,
7071
StarlarkRuleContext,
7172
StarlarkActionFactory> {
@@ -101,6 +102,7 @@ public JavaInfo createJavaCompileAction(
101102
Sequence<?> annotationProcessorAdditionalOutputs, // <Artifact> expected
102103
String strictDepsMode,
103104
JavaToolchainProvider javaToolchain,
105+
Object bootClassPath,
104106
Object hostJavabase,
105107
Sequence<?> sourcepathEntries, // <Artifact> expected
106108
Sequence<?> resources, // <Artifact> expected
@@ -190,6 +192,7 @@ public JavaInfo createJavaCompileAction(
190192
"annotation_processor_additional_outputs"),
191193
strictDepsMode,
192194
javaToolchain,
195+
bootClassPath == Starlark.NONE ? null : (BootClassPathInfo) bootClassPath,
193196
ImmutableList.copyOf(Sequence.cast(sourcepathEntries, Artifact.class, "sourcepath")),
194197
Sequence.cast(resources, Artifact.class, "resources"),
195198
Sequence.cast(resourceJars, Artifact.class, "resource_jars"),

src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaBootstrap.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
/** {@link Bootstrap} for Starlark objects related to the java language. */
2727
public class JavaBootstrap implements Bootstrap {
2828

29-
private final JavaCommonApi<?, ?, ?, ?, ?, ?> javaCommonApi;
29+
private final JavaCommonApi<?, ?, ?, ?, ?, ?, ?> javaCommonApi;
3030
private final JavaInfoProviderApi javaInfoProviderApi;
3131
private final JavaPluginInfoApi.Provider<?> javaPluginInfoProviderApi;
3232
private final ProguardSpecProviderApi.Provider<?> proguardSpecProvider;
@@ -38,7 +38,7 @@ public class JavaBootstrap implements Bootstrap {
3838
PackageIdentifier.createUnchecked("", "tools/build_defs/java"));
3939

4040
public JavaBootstrap(
41-
JavaCommonApi<?, ?, ?, ?, ?, ?> javaCommonApi,
41+
JavaCommonApi<?, ?, ?, ?, ?, ?, ?> javaCommonApi,
4242
JavaInfoProviderApi javaInfoProviderApi,
4343
JavaPluginInfoApi.Provider<?> javaPluginInfoProviderApi,
4444
ProguardSpecProviderApi.Provider<?> proguardSpecProvider) {

src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java/JavaCommonApi.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public interface JavaCommonApi<
5050
FileT extends FileApi,
5151
JavaInfoT extends JavaInfoApi<FileT, ?, ?>,
5252
JavaToolchainT extends JavaToolchainStarlarkApiProviderApi,
53+
BootClassPathT extends ProviderApi,
5354
ConstraintValueT extends ConstraintValueInfoApi,
5455
StarlarkRuleContextT extends StarlarkRuleContextApi<ConstraintValueT>,
5556
StarlarkActionFactoryT extends StarlarkActionFactoryApi>
@@ -190,6 +191,14 @@ public interface JavaCommonApi<
190191
positional = false,
191192
named = true,
192193
doc = "A JavaToolchainInfo to be used for this compilation. Mandatory."),
194+
@Param(
195+
name = "bootclasspath",
196+
positional = false,
197+
named = true,
198+
defaultValue = "None",
199+
doc =
200+
"A BootClassPathInfo to be used for this compilation. If present, overrides the"
201+
+ " bootclasspath associated with the provided java_toolchain. Optional."),
193202
@Param(
194203
name = "host_javabase",
195204
positional = false,
@@ -301,6 +310,7 @@ JavaInfoT createJavaCompileAction(
301310
Sequence<?> annotationProcessorAdditionalOutputs, // <FileT> expected.
302311
String strictDepsMode,
303312
JavaToolchainT javaToolchain,
313+
Object bootClassPath,
304314
Object hostJavabase,
305315
Sequence<?> sourcepathEntries, // <FileT> expected.
306316
Sequence<?> resources, // <FileT> expected.

0 commit comments

Comments
 (0)