diff --git a/src/main/starlark/builtins_bzl/common/java/java_binary.bzl b/src/main/starlark/builtins_bzl/common/java/java_binary.bzl index 8442348d9069f6..3e13c4735bccc4 100644 --- a/src/main/starlark/builtins_bzl/common/java/java_binary.bzl +++ b/src/main/starlark/builtins_bzl/common/java/java_binary.bzl @@ -25,7 +25,7 @@ load( "get_runtime_classpath_for_archive", ) load(":common/java/java_helper.bzl", "helper") -load(":common/java/java_info.bzl", "JavaInfo", "JavaPluginInfo", "to_java_binary_info") +load(":common/java/java_info.bzl", "JavaCompilationInfo", "JavaInfo", "JavaPluginInfo", "to_java_binary_info") load(":common/java/java_semantics.bzl", "semantics") load(":common/paths.bzl", "paths") load(":common/proto/proto_info.bzl", "ProtoInfo") @@ -127,6 +127,7 @@ def basic_java_binary( add_opens = ctx.attr.add_opens, ) java_info = target["JavaInfo"] + compilation_info = java_info.compilation_info runtime_classpath = depset( order = "preorder", transitive = [ @@ -149,6 +150,13 @@ def basic_java_binary( ), ], ) + compilation_info = JavaCompilationInfo( + compilation_classpath = compilation_info.compilation_classpath, + runtime_classpath = runtime_classpath, + boot_classpath = compilation_info.boot_classpath, + javac_options = compilation_info.javac_options, + javac_options_list = compilation_info.javac_options_list, + ) java_attrs = _collect_attrs(ctx, runtime_classpath, classpath_resources) @@ -264,7 +272,7 @@ def basic_java_binary( _filter_validation_output_group(ctx, output_groups) - java_binary_info = to_java_binary_info(java_info) + java_binary_info = to_java_binary_info(java_info, compilation_info) default_info = struct( files = files, diff --git a/src/main/starlark/builtins_bzl/common/java/java_info.bzl b/src/main/starlark/builtins_bzl/common/java/java_info.bzl index 28623a93ee87f7..d52c4b33bc6747 100644 --- a/src/main/starlark/builtins_bzl/common/java/java_info.bzl +++ b/src/main/starlark/builtins_bzl/common/java/java_info.bzl @@ -77,7 +77,7 @@ _JavaGenJarsInfo = provider( }, ) -_JavaCompilationInfo = provider( +JavaCompilationInfo = provider( doc = "Compilation information in Java rules, for perusal of aspects and tools.", fields = { "boot_classpath": "Boot classpath for this Java target.", @@ -91,14 +91,6 @@ _JavaCompilationInfo = provider( }, ) -_EMPTY_COMPILATION_INFO = _JavaCompilationInfo( - compilation_classpath = depset(), - runtime_classpath = depset(), - boot_classpath = None, - javac_options = [], - javac_options_list = [], -) - def merge( providers, # private to @_builtins: @@ -196,12 +188,12 @@ def merge( ) return _java_common_internal.wrap_java_info(_new_javainfo(**result)) -def to_java_binary_info(java_info): +def to_java_binary_info(java_info, compilation_info): """Get a copy of the given JavaInfo with minimal info returned by a java_binary Args: java_info: (JavaInfo) A JavaInfo provider instance - + compilation_info: (JavaCompilationInfo) Returns: (JavaInfo) A JavaInfo instance representing a java_binary target """ @@ -226,17 +218,6 @@ def to_java_binary_info(java_info): if hasattr(java_info, "cc_link_params_info"): result.update(cc_link_params_info = java_info.cc_link_params_info) - compilation_info = _EMPTY_COMPILATION_INFO - if java_info.compilation_info: - compilation_info = java_info.compilation_info - elif java_info.transitive_compile_time_jars or java_info.transitive_runtime_jars: - compilation_info = _JavaCompilationInfo( - boot_classpath = None, - javac_options = [], - javac_options_list = [], - compilation_classpath = java_info.transitive_compile_time_jars, - runtime_classpath = java_info.transitive_runtime_jars, - ) result["compilation_info"] = compilation_info java_outputs = [ @@ -471,7 +452,7 @@ def java_info_for_compilation( ) if compilation_info: result.update( - compilation_info = _JavaCompilationInfo( + compilation_info = JavaCompilationInfo( javac_options = _java_common_internal.intern_javac_opts(compilation_info.javac_options), javac_options_list = _java_common_internal.intern_javac_opts(compilation_info.javac_options_list), boot_classpath = compilation_info.boot_classpath,