From 9524dac478fa186eab6c5f292239cc0b1b3fa150 Mon Sep 17 00:00:00 2001 From: Googler Date: Mon, 2 Oct 2023 07:08:55 -0700 Subject: [PATCH] Use proto toolchains in java_lite_proto_library Retrieve proto_lang_toolchain using toolchains in java_lite_proto_library when proto toolchain resolution is enabled. Issue: https://github.com/bazelbuild/rules_proto/issues/179 PiperOrigin-RevId: 570056144 Change-Id: Ia952003017d18baca71d4e0ba75fc3134b972817 --- .../common/java/java_semantics.bzl | 1 + .../java/proto/java_lite_proto_library.bzl | 25 +++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl index a631b1617dbe29..f86cf31714f78b 100644 --- a/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl +++ b/src/main/starlark/builtins_bzl/common/java/java_semantics.bzl @@ -74,4 +74,5 @@ semantics = struct( get_coverage_runner = _get_coverage_runner, add_constraints = _add_constraints, JAVA_PROTO_TOOLCHAIN = "@rules_java//java/proto:toolchain_type", + JAVA_LITE_PROTO_TOOLCHAIN = "@rules_java//java/proto:lite_toolchain_type", ) diff --git a/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl b/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl index fbe4f387dda8c9..6f08afdc6b3c40 100644 --- a/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl +++ b/src/main/starlark/builtins_bzl/common/java/proto/java_lite_proto_library.bzl @@ -16,7 +16,7 @@ load(":common/java/java_semantics.bzl", "semantics") load(":common/java/proto/java_proto_library.bzl", "JavaProtoAspectInfo", "java_compile_for_protos") -load(":common/proto/proto_common.bzl", "ProtoLangToolchainInfo", proto_common = "proto_common_do_not_use") +load(":common/proto/proto_common.bzl", "toolchains", "ProtoLangToolchainInfo", proto_common = "proto_common_do_not_use") PROTO_TOOLCHAIN_ATTR = "_aspect_proto_toolchain_for_javalite" @@ -40,7 +40,11 @@ def _aspect_impl(target, ctx): deps = [dep[JavaInfo] for dep in ctx.rule.attr.deps] exports = [exp[JavaInfo] for exp in ctx.rule.attr.exports] - proto_toolchain_info = ctx.attr._aspect_proto_toolchain_for_javalite[ProtoLangToolchainInfo] + proto_toolchain_info = toolchains.find_toolchain( + ctx, + "_aspect_proto_toolchain_for_javalite", + semantics.JAVA_LITE_PROTO_TOOLCHAIN, + ) source_jar = None if proto_common.experimental_should_generate_code(target[ProtoInfo], proto_toolchain_info, "java_lite_proto_library", target.label): @@ -74,15 +78,16 @@ def _aspect_impl(target, ctx): java_lite_proto_aspect = aspect( implementation = _aspect_impl, attr_aspects = ["deps", "exports"], - attrs = { + attrs = toolchains.if_legacy_toolchain({ PROTO_TOOLCHAIN_ATTR: attr.label( default = configuration_field(fragment = "proto", name = "proto_toolchain_for_java_lite"), ), - }, + }), fragments = ["java"], required_providers = [ProtoInfo], provides = [JavaInfo, JavaProtoAspectInfo], - toolchains = [semantics.JAVA_TOOLCHAIN], + toolchains = [semantics.JAVA_TOOLCHAIN] + + toolchains.use_toolchain(semantics.JAVA_LITE_PROTO_TOOLCHAIN), ) def _rule_impl(ctx): @@ -98,7 +103,11 @@ def _rule_impl(ctx): ([JavaInfo, DefaultInfo, OutputGroupInfo, ProguardSpecProvider]) """ - proto_toolchain_info = ctx.attr._aspect_proto_toolchain_for_javalite[ProtoLangToolchainInfo] + proto_toolchain_info = toolchains.find_toolchain( + ctx, + "_aspect_proto_toolchain_for_javalite", + semantics.JAVA_LITE_PROTO_TOOLCHAIN, + ) runtime = proto_toolchain_info.runtime if runtime: @@ -127,9 +136,11 @@ java_lite_proto_library = rule( implementation = _rule_impl, attrs = { "deps": attr.label_list(providers = [ProtoInfo], aspects = [java_lite_proto_aspect]), + } | toolchains.if_legacy_toolchain({ PROTO_TOOLCHAIN_ATTR: attr.label( default = configuration_field(fragment = "proto", name = "proto_toolchain_for_java_lite"), ), - }, + }), provides = [JavaInfo], + toolchains = toolchains.use_toolchain(semantics.JAVA_LITE_PROTO_TOOLCHAIN), )