Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bazelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
build --cxxopt=-std=c++17 --host_cxxopt=-std=c++17

common:skip_android --deleted_packages=android,binder
common:skip_android --deleted_packages=android,binder
15 changes: 9 additions & 6 deletions compiler/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
load("@com_google_protobuf//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
load("@rules_cc//cc:defs.bzl", "cc_binary")
load("@rules_java//java:defs.bzl", "java_library")
load("@rules_jvm_external//:defs.bzl", "artifact")
load("//:java_grpc_library.bzl", "java_rpc_toolchain")

# This should not generally be referenced. Users should use java_grpc_library
cc_binary(
Expand Down Expand Up @@ -42,17 +42,20 @@ java_library(
],
)

java_rpc_toolchain(
proto_lang_toolchain(
name = "java_grpc_library_toolchain",
command_line = "--rpc-plugin_out=%s",
plugin = "//compiler:grpc_java_plugin",
runtime = [":java_grpc_library_deps__do_not_reference"],
plugin_format_flag = "--plugin=protoc-gen-rpc-plugin=%s",
runtime = ":java_grpc_library_deps__do_not_reference",
visibility = ["//visibility:public"],
)

java_rpc_toolchain(
proto_lang_toolchain(
name = "java_lite_grpc_library_toolchain",
command_line = "--rpc-plugin_out=lite:%s",
plugin = "//compiler:grpc_java_plugin",
plugin_arg = "lite",
runtime = [":java_lite_grpc_library_deps__do_not_reference"],
plugin_format_flag = "--plugin=protoc-gen-rpc-plugin=%s",
runtime = ":java_lite_grpc_library_deps__do_not_reference",
visibility = ["//visibility:public"],
)
61 changes: 40 additions & 21 deletions java_grpc_library.bzl
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
"""Build rule for java_grpc_library."""
Comment thread
AgraVator marked this conversation as resolved.

load("@com_google_protobuf//bazel/common:proto_common.bzl", "proto_common")
load("@com_google_protobuf//bazel/common:proto_info.bzl", "ProtoInfo")
load("@com_google_protobuf//bazel/common:proto_lang_toolchain_info.bzl", "ProtoLangToolchainInfo")
load("@rules_java//java:defs.bzl", "JavaInfo", "JavaPluginInfo", "java_common")

_JavaRpcToolchainInfo = provider(
Expand Down Expand Up @@ -85,39 +87,56 @@ def _java_rpc_library_impl(ctx):
print(("in srcs attribute of {0}: Proto source with label {1} should be in " +
"same package as consuming rule").format(ctx.label, ctx.attr.srcs[0].label))

toolchain = ctx.attr._toolchain[_JavaRpcToolchainInfo]
srcs = ctx.attr.srcs[0][ProtoInfo].direct_sources
descriptor_set_in = ctx.attr.srcs[0][ProtoInfo].transitive_descriptor_sets

srcjar = ctx.actions.declare_file("%s-proto-gensrc.jar" % ctx.label.name)

args = ctx.actions.args()
args.add(toolchain.plugin[DefaultInfo].files_to_run.executable, format = "--plugin=protoc-gen-rpc-plugin=%s")
args.add("--rpc-plugin_out={0}:{1}".format(toolchain.plugin_arg, srcjar.path))
args.add_joined("--descriptor_set_in", descriptor_set_in, join_with = ctx.configuration.host_path_separator)
args.add_all(srcs, map_each = _path_ignoring_repository)

ctx.actions.run(
inputs = depset(srcs, transitive = [descriptor_set_in, toolchain.plugin[DefaultInfo].files]),
outputs = [srcjar],
executable = toolchain.protoc[DefaultInfo].files_to_run,
arguments = [args],
use_default_shell_env = True,
toolchain = None,
)
if ProtoLangToolchainInfo in ctx.attr._toolchain:
toolchain = ctx.attr._toolchain[ProtoLangToolchainInfo]
proto_common.compile(
actions = ctx.actions,
proto_info = ctx.attr.srcs[0][ProtoInfo],
proto_lang_toolchain_info = toolchain,
generated_files = [srcjar],
plugin_output = srcjar.path,
)
java_toolchain = ctx.toolchains["@bazel_tools//tools/jdk:toolchain_type"].java
java_plugins = []
runtime_deps = [toolchain.runtime[JavaInfo]] if toolchain.runtime else []
else:
# Legacy support for java_rpc_toolchain
toolchain = ctx.attr._toolchain[_JavaRpcToolchainInfo]
srcs = ctx.attr.srcs[0][ProtoInfo].direct_sources
descriptor_set_in = ctx.attr.srcs[0][ProtoInfo].transitive_descriptor_sets

args = ctx.actions.args()
args.add(toolchain.plugin[DefaultInfo].files_to_run.executable, format = "--plugin=protoc-gen-rpc-plugin=%s")
args.add("--rpc-plugin_out={0}:{1}".format(toolchain.plugin_arg, srcjar.path))
args.add_joined("--descriptor_set_in", descriptor_set_in, join_with = ctx.configuration.host_path_separator)
args.add_all(srcs, map_each = _path_ignoring_repository)

ctx.actions.run(
inputs = depset(srcs, transitive = [descriptor_set_in, toolchain.plugin[DefaultInfo].files]),
outputs = [srcjar],
executable = toolchain.protoc[DefaultInfo].files_to_run,
arguments = [args],
use_default_shell_env = True,
toolchain = None,
)
java_toolchain = toolchain.java_toolchain[java_common.JavaToolchainInfo]
java_plugins = [plugin[JavaPluginInfo] for plugin in toolchain.java_plugins]
runtime_deps = [dep[JavaInfo] for dep in toolchain.runtime]

deps_java_info = java_common.merge([dep[JavaInfo] for dep in ctx.attr.deps])

java_info = java_common.compile(
ctx,
java_toolchain = toolchain.java_toolchain[java_common.JavaToolchainInfo],
java_toolchain = java_toolchain,
source_jars = [srcjar],
output = ctx.outputs.jar,
output_source_jar = ctx.outputs.srcjar,
plugins = [plugin[JavaPluginInfo] for plugin in toolchain.java_plugins],

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like we need to still support this, as there are usages internally. I don't know if that means we need a second toolchain, or what.

plugins = java_plugins,
deps = [
java_common.make_non_strict(deps_java_info),
] + [dep[JavaInfo] for dep in toolchain.runtime],
] + runtime_deps,
)

return [java_info]
Expand Down
9 changes: 6 additions & 3 deletions xds/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
load("@bazel_jar_jar//:jar_jar.bzl", "jar_jar")
load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library")
load("@com_google_protobuf//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
load("@rules_java//java:defs.bzl", "java_binary", "java_library", "java_test")
load("@rules_jvm_external//:defs.bzl", "artifact")
load("//:java_grpc_library.bzl", "INTERNAL_java_grpc_library_for_xds", "java_grpc_library", "java_rpc_toolchain")
load("//:java_grpc_library.bzl", "INTERNAL_java_grpc_library_for_xds", "java_grpc_library")

# Mirrors the dependencies included in the artifact on Maven Central for usage
# with maven_install's override_targets. Should only be used as a dep for
Expand Down Expand Up @@ -319,10 +320,12 @@ java_grpc_library(
deps = [":xds_orca_java_proto"],
)

java_rpc_toolchain(
proto_lang_toolchain(
name = "java_grpc_library_toolchain",
command_line = "--rpc-plugin_out=%s",
plugin = "//compiler:grpc_java_plugin",
runtime = [":java_grpc_library_deps"],
plugin_format_flag = "--plugin=protoc-gen-rpc-plugin=%s",
runtime = ":java_grpc_library_deps",
)

java_library(
Expand Down
Loading