From 1af3758c05a829f88b9ae517f5fabd028c800f5c Mon Sep 17 00:00:00 2001 From: Arsen Tumanyan Date: Thu, 16 Jan 2025 16:25:49 -0800 Subject: [PATCH] Write used-jars.json for kotlin/java builds Summary: - used-classes.json files are used to remove unused dependencies from android/java/kotlin targets - However, as [suggested](https://www.internalfb.com/diff/D66472678?dst_version_fbid=843546227744657&transaction_fbid=1102626487937834) by navidqar exposing them through providers isn't ideal because their format isn't guaranteed. - As a solution this diff adds a new output to kotlincd_jar and javacd_jar actions - used-jars.json, which will then be exposed through Providers for further processing Reviewed By: navidqar Differential Revision: D68231809 fbshipit-source-id: c664bfc2c6ab3f72204858e1bd477869f968a051 --- prelude/java/javacd_jar_creator.bzl | 2 ++ prelude/jvm/cd_jar_creator_util.bzl | 2 ++ prelude/kotlin/kotlincd_jar_creator.bzl | 2 ++ 3 files changed, 6 insertions(+) diff --git a/prelude/java/javacd_jar_creator.bzl b/prelude/java/javacd_jar_creator.bzl index 548f252031584..2e36ce50ea2d9 100644 --- a/prelude/java/javacd_jar_creator.bzl +++ b/prelude/java/javacd_jar_creator.bzl @@ -309,6 +309,7 @@ def _define_javacd_action( elif compiling_deps_tset: abi_to_abi_dir_map = compiling_deps_tset.project_as_args("abi_to_abi_dir") used_classes_json_outputs = [output_paths.jar_parent.project("used-classes.json")] + used_jars_json_output = output_paths.jar_parent.project("used-jars.json") args = setup_dep_files( actions, actions_identifier, @@ -316,6 +317,7 @@ def _define_javacd_action( post_build_params, classpath_jars_tag, used_classes_json_outputs, + used_jars_json_output, abi_to_abi_dir_map, hidden = hidden, ) diff --git a/prelude/jvm/cd_jar_creator_util.bzl b/prelude/jvm/cd_jar_creator_util.bzl index 6b1bfc6ed4714..1e2107ff79fe7 100644 --- a/prelude/jvm/cd_jar_creator_util.bzl +++ b/prelude/jvm/cd_jar_creator_util.bzl @@ -345,6 +345,7 @@ def setup_dep_files( post_build_params: dict, classpath_jars_tag: ArtifactTag, used_classes_json_outputs: list[Artifact], + used_jars_json_output: Artifact, abi_to_abi_dir_map: [TransitiveSetArgsProjection, list[cmd_args], None], hidden = ["artifact"]) -> cmd_args: dep_file = declare_prefixed_output(actions, actions_identifier, "dep_file.txt") @@ -357,6 +358,7 @@ def setup_dep_files( for used_classes_json in used_classes_json_outputs ] post_build_params["depFile"] = classpath_jars_tag.tag_artifacts(dep_file.as_output()) + post_build_params["usedJarsFile"] = used_jars_json_output.as_output() if abi_to_abi_dir_map: abi_to_abi_dir_map_file = declare_prefixed_output(actions, actions_identifier, "abi_to_abi_dir_map") diff --git a/prelude/kotlin/kotlincd_jar_creator.bzl b/prelude/kotlin/kotlincd_jar_creator.bzl index c8cc7d4627759..7959f50d4349d 100644 --- a/prelude/kotlin/kotlincd_jar_creator.bzl +++ b/prelude/kotlin/kotlincd_jar_creator.bzl @@ -463,6 +463,7 @@ def _define_kotlincd_action( output_paths.jar_parent.project("used-classes.json"), output_paths.jar_parent.project("kotlin-used-classes.json"), ] + used_jars_json_output = output_paths.jar_parent.project("used-jars.json") args = setup_dep_files( actions, actions_identifier, @@ -470,6 +471,7 @@ def _define_kotlincd_action( post_build_params, classpath_jars_tag, used_classes_json_outputs, + used_jars_json_output, compiling_deps_tset.project_as_args("abi_to_abi_dir") if kotlin_toolchain.dep_files == DepFiles("per_class") and compiling_deps_tset else None, )