From 1c63d2a535303b18cd9564369c0dc8eb82b1cb3b Mon Sep 17 00:00:00 2001 From: Joshua Selbo Date: Wed, 22 Jan 2025 07:11:04 -0800 Subject: [PATCH] Don't add JDK8 stubs for Android javacd actions Summary: We're not supposed to use the JDK 8 stubs for Android build actions -- only the Android SDK jar. Only in the javacd case we are wrongly adding the stubs. To fix, consolidate with the correct logic from `java_library.bzl`. Reviewed By: hick209 Differential Revision: D68458151 fbshipit-source-id: 855cee098cb741a8edec836a91ae8bd0140bcb23 --- java/java_library.bzl | 14 ++------------ java/javacd_jar_creator.bzl | 4 ++-- java/utils/java_utils.bzl | 11 +++++++++++ jvm/cd_jar_creator_util.bzl | 6 ------ 4 files changed, 15 insertions(+), 20 deletions(-) diff --git a/java/java_library.bzl b/java/java_library.bzl index 520eabfc6..3af2e51ed 100644 --- a/java/java_library.bzl +++ b/java/java_library.bzl @@ -33,7 +33,7 @@ load( "create_plugin_params", ) load("@prelude//java/utils:java_more_utils.bzl", "get_path_separator_for_exec_os") -load("@prelude//java/utils:java_utils.bzl", "declare_prefixed_name", "derive_javac", "get_abi_generation_mode", "get_class_to_source_map_info", "get_default_info", "get_java_version_attributes", "to_java_version") +load("@prelude//java/utils:java_utils.bzl", "build_bootclasspath", "declare_prefixed_name", "derive_javac", "get_abi_generation_mode", "get_class_to_source_map_info", "get_default_info", "get_java_version_attributes", "to_java_version") load("@prelude//jvm:cd_jar_creator_util.bzl", "postprocess_jar") load("@prelude//jvm:nullsafe.bzl", "get_nullsafe_info") load("@prelude//linking:shared_libraries.bzl", "SharedLibraryInfo") @@ -135,16 +135,6 @@ def _build_classpath(actions: AnalysisActions, deps: list[Dependency], additiona return None -def _build_bootclasspath(bootclasspath_entries: list[Artifact], source_level: int, java_toolchain: JavaToolchainInfo) -> list[Artifact]: - bootclasspath_list = [] - if source_level in [8]: - if bootclasspath_entries: - bootclasspath_list = bootclasspath_entries - elif source_level == 8: - expect(java_toolchain.bootclasspath_8, "Must specify bootclasspath for source level 8") - bootclasspath_list = java_toolchain.bootclasspath_8 - return bootclasspath_list - def _append_javac_params( ctx: AnalysisContext, actions_identifier: [str, None], @@ -186,7 +176,7 @@ def _append_javac_params( javac_args.add("-target") javac_args.add(str(target_level)) - bootclasspath_list = _build_bootclasspath(bootclasspath_entries, source_level, java_toolchain) + bootclasspath_list = build_bootclasspath(bootclasspath_entries, source_level, java_toolchain) if bootclasspath_list: cmd.add(_process_classpath( ctx.actions, diff --git a/java/javacd_jar_creator.bzl b/java/javacd_jar_creator.bzl index 27676362d..6388b0eda 100644 --- a/java/javacd_jar_creator.bzl +++ b/java/javacd_jar_creator.bzl @@ -29,12 +29,12 @@ load( "@prelude//java/plugins:java_plugin.bzl", "PluginParams", # @unused Used as a type ) +load("@prelude//java/utils:java_utils.bzl", "build_bootclasspath") load( "@prelude//jvm:cd_jar_creator_util.bzl", "BuildMode", "OutputPaths", "TargetType", - "add_java_7_8_bootclasspath", "base_qualified_name", "declare_prefixed_output", "define_output_paths", @@ -82,7 +82,7 @@ def create_jar_artifact_javacd( actions = ctx.actions resources_map = get_resources_map(java_toolchain, label.package, resources, resources_root) - bootclasspath_entries = add_java_7_8_bootclasspath(target_level, bootclasspath_entries, java_toolchain) + bootclasspath_entries = build_bootclasspath(bootclasspath_entries, source_level, java_toolchain) abi_generation_mode = get_abi_generation_mode(abi_generation_mode, java_toolchain, srcs, annotation_processor_properties) should_create_class_abi = ( diff --git a/java/utils/java_utils.bzl b/java/utils/java_utils.bzl index 476b685b3..5e420f74d 100644 --- a/java/utils/java_utils.bzl +++ b/java/utils/java_utils.bzl @@ -157,3 +157,14 @@ def get_classpath_subtarget(actions: AnalysisActions, packaging_info: JavaPackag proj = packaging_info.packaging_deps.project_as_args("full_jar_args") output = actions.write("classpath", proj) return {"classpath": [DefaultInfo(output, other_outputs = [proj])]} + +def build_bootclasspath(bootclasspath_entries: list[Artifact], source_level: int, java_toolchain: JavaToolchainInfo) -> list[Artifact]: + bootclasspath_list = [] + if source_level in [7, 8]: + # bootclasspath_7 is deprecated. + if bootclasspath_entries: + bootclasspath_list = bootclasspath_entries + elif source_level == 8: + expect(java_toolchain.bootclasspath_8, "Must specify bootclasspath for source level 8") + bootclasspath_list = java_toolchain.bootclasspath_8 + return bootclasspath_list diff --git a/jvm/cd_jar_creator_util.bzl b/jvm/cd_jar_creator_util.bzl index 1e2107ff7..5d41e3e0e 100644 --- a/jvm/cd_jar_creator_util.bzl +++ b/jvm/cd_jar_creator_util.bzl @@ -22,12 +22,6 @@ load( load("@prelude//java/utils:java_utils.bzl", "declare_prefixed_name") load("@prelude//utils:expect.bzl", "expect") -def add_java_7_8_bootclasspath(target_level: int, bootclasspath_entries: list[Artifact], java_toolchain: JavaToolchainInfo) -> list[Artifact]: - # bootclasspath_7 is deprecated. - if target_level == 8: - return bootclasspath_entries + java_toolchain.bootclasspath_8 - return bootclasspath_entries - def declare_prefixed_output(actions: AnalysisActions, prefix: [str, None], output: str, dir: bool = False) -> Artifact: return actions.declare_output(declare_prefixed_name(output, prefix), dir = dir)