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
33 changes: 16 additions & 17 deletions extensions/prost/private/prost.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def _compile_proto(
lib_rs = ctx.actions.declare_file("{}.lib.rs".format(ctx.label.name))

proto_compiler = prost_toolchain.proto_compiler
tools = depset([proto_compiler.executable])
tools = [proto_compiler.executable]

tonic_opts = []
prost_opts = []
Expand All @@ -78,34 +78,33 @@ def _compile_proto(

all_additional_srcs = depset(transitive = additional_srcs)
direct_crate_names = [dep[ProstProtoInfo].dep_variant_info.crate_info.name for dep in deps]
additional_args = ctx.actions.args()

# Prost process wrapper specific args
compile_well_known_types = prost_toolchain.compile_well_known_types
additional_args.add("--protoc={}".format(proto_compiler.executable.path))
additional_args.add("--label={}".format(ctx.label))
additional_args.add("--out_librs={}".format(lib_rs.path))
additional_args = ctx.actions.args()
additional_args.add(proto_compiler.executable, format = "--protoc=%s")
additional_args.add(ctx.label, format = "--label=%s")
additional_args.add(lib_rs, format = "--out_librs=%s")
additional_args.add("--package_info_output={}".format("{}={}".format(crate_name, package_info_file.path)))
additional_args.add("--deps_info={}".format(deps_info_file.path))
additional_args.add("--direct_dep_crate_names={}".format(",".join(direct_crate_names)))
if compile_well_known_types:
additional_args.add(deps_info_file, format = "--deps_info=%s")
additional_args.add_joined(direct_crate_names, join_with = ",", format_joined = "--direct_dep_crate_names=%s")
if prost_toolchain.compile_well_known_types:
additional_args.add("--compile_well_known_types")
additional_args.add("--descriptor_set={}".format(proto_info.direct_descriptor_set.path))
additional_args.add("--additional_srcs={}".format(",".join([f.path for f in all_additional_srcs.to_list()])))
additional_args.add(proto_info.direct_descriptor_set, format = "--descriptor_set=%s")
additional_args.add_joined(all_additional_srcs, join_with = ",", format_joined = "--additional_srcs=%s")
additional_args.add_all(prost_toolchain.prost_opts + prost_opts, format_each = "--prost_opt=%s")

if prost_toolchain.tonic_plugin:
tonic_plugin = prost_toolchain.tonic_plugin[DefaultInfo].files_to_run
additional_args.add(prost_toolchain.tonic_plugin_flag % tonic_plugin.executable.path)
additional_args.add(tonic_plugin.executable, format = prost_toolchain.tonic_plugin_flag)
additional_args.add("--tonic_opt=no_include")
additional_args.add("--is_tonic")

additional_args.add_all(prost_toolchain.tonic_opts + tonic_opts, format_each = "--tonic_opt=%s")
tools = depset([tonic_plugin.executable], transitive = [tools])
tools.append(tonic_plugin.executable)

if rustfmt_toolchain:
additional_args.add("--rustfmt={}".format(rustfmt_toolchain.rustfmt.path))
tools = depset(transitive = [tools, rustfmt_toolchain.all_files])
additional_args.add(rustfmt_toolchain.rustfmt, format = "--rustfmt=%s")
tools = depset(tools, transitive = [rustfmt_toolchain.all_files]).to_list()

additional_inputs = depset(
[deps_info_file, proto_info.direct_descriptor_set] + [dep[ProstProtoInfo].package_info for dep in deps],
Expand All @@ -115,7 +114,7 @@ def _compile_proto(
proto_common.compile(
actions = ctx.actions,
proto_info = proto_info,
additional_tools = tools.to_list(),
additional_tools = tools,
additional_inputs = additional_inputs,
additional_args = additional_args,
generated_files = [lib_rs, package_info_file],
Expand Down Expand Up @@ -208,7 +207,7 @@ def _compile_rust(
name = crate_name,
type = "rlib",
root = src,
srcs = depset([src]),
srcs = [src],
deps = deps,
proc_macro_deps = [],
aliases = {},
Expand Down
2 changes: 1 addition & 1 deletion extensions/protobuf/proto.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def _rust_proto_compile(protos, descriptor_sets, imports, crate_name, ctx, is_gr
name = crate_name,
type = "rlib",
root = lib_rs,
srcs = depset(srcs),
srcs = srcs,
deps = compile_action_deps,
proc_macro_deps = [],
aliases = {},
Expand Down
2 changes: 1 addition & 1 deletion extensions/wasm_bindgen/private/wasm_bindgen_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def _rust_wasm_bindgen_test_impl(ctx):
name = crate.name,
type = crate_type,
root = crate.root,
srcs = depset(srcs, transitive = [crate.srcs]),
srcs = depset(srcs, transitive = [crate.srcs]).to_list(),
deps = depset(deps, transitive = [crate.deps]).to_list(),
proc_macro_deps = depset(proc_macro_deps, transitive = [crate.proc_macro_deps]).to_list(),
aliases = {},
Expand Down
8 changes: 4 additions & 4 deletions rust/private/rust.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ def _rust_library_common(ctx, crate_type):
name = crate_name,
type = crate_type,
root = crate_root,
srcs = depset(srcs),
srcs = srcs,
deps = deps,
proc_macro_deps = proc_macro_deps,
aliases = ctx.attr.aliases,
Expand Down Expand Up @@ -285,7 +285,7 @@ def _rust_binary_impl(ctx):
name = crate_name,
type = ctx.attr.crate_type,
root = crate_root,
srcs = depset(srcs),
srcs = srcs,
deps = deps,
proc_macro_deps = proc_macro_deps,
aliases = ctx.attr.aliases,
Expand Down Expand Up @@ -417,7 +417,7 @@ def _rust_test_impl(ctx):
name = crate_name,
type = crate_type,
root = crate.root,
srcs = depset(srcs),
srcs = srcs,
deps = depset(deps, transitive = [crate.deps]).to_list(),
proc_macro_deps = depset(proc_macro_deps, transitive = [crate.proc_macro_deps]).to_list(),
aliases = aliases,
Expand Down Expand Up @@ -483,7 +483,7 @@ def _rust_test_impl(ctx):
name = crate_name,
type = crate_type,
root = crate_root,
srcs = depset(srcs),
srcs = srcs,
deps = deps,
proc_macro_deps = proc_macro_deps,
aliases = ctx.attr.aliases,
Expand Down
18 changes: 11 additions & 7 deletions rust/private/rustc.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1204,15 +1204,18 @@ def rustc_compile_action(
"""
deps = crate_info_dict.pop("deps")
proc_macro_deps = crate_info_dict.pop("proc_macro_deps")
srcs = crate_info_dict.pop("srcs")

crate_info = rust_common.create_crate_info(
deps = depset(deps),
proc_macro_deps = depset(proc_macro_deps),
srcs = depset(srcs),
**crate_info_dict
)

build_metadata = crate_info_dict.get("metadata", None)
rustc_output = crate_info_dict.get("rustc_output", None)
rustc_rmeta_output = crate_info_dict.get("rustc_rmeta_output", None)
build_metadata = crate_info.metadata
rustc_output = crate_info.rustc_output
rustc_rmeta_output = crate_info.rustc_rmeta_output

# Determine whether to use cc_common.link:
# * either if experimental_use_cc_common_link is 1,
Expand All @@ -1230,7 +1233,7 @@ def rustc_compile_action(
dep_info, build_info, linkstamps = collect_deps(
deps = deps,
proc_macro_deps = proc_macro_deps,
aliases = crate_info_dict["aliases"],
aliases = crate_info.aliases,
)
extra_disabled_features = [RUST_LINK_CC_FEATURE]
if crate_info.type in ["bin", "cdylib"] and dep_info.transitive_noncrates.to_list():
Expand Down Expand Up @@ -1399,7 +1402,7 @@ def rustc_compile_action(
crate_info.type,
ctx.label.name,
formatted_version,
len(crate_info.srcs.to_list()),
len(srcs),
),
toolchain = "@rules_rust//rust:toolchain_type",
resource_set = get_rustc_resource_set(toolchain),
Expand All @@ -1416,7 +1419,7 @@ def rustc_compile_action(
crate_info.type,
ctx.label.name,
formatted_version,
len(crate_info.srcs.to_list()),
len(srcs),
),
toolchain = "@rules_rust//rust:toolchain_type",
)
Expand All @@ -1435,7 +1438,7 @@ def rustc_compile_action(
crate_info.type,
ctx.label.name,
formatted_version,
len(crate_info.srcs.to_list()),
Copy link
Collaborator

Choose a reason for hiding this comment

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

Could this be the source of the performance issues? I would rather delete this logging than make an api change.

Copy link
Contributor Author

@dzbarsky dzbarsky Oct 3, 2025

Choose a reason for hiding this comment

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

yep, exactly. I'm happy to delete this logging, but FWIW I think the API change is only to private functions; the CrateInfo provider still carries a depset

len(srcs),
),
toolchain = "@rules_rust//rust:toolchain_type",
resource_set = get_rustc_resource_set(toolchain),
Expand Down Expand Up @@ -1604,6 +1607,7 @@ def rustc_compile_action(
crate_info = rust_common.create_crate_info(
deps = depset(deps),
proc_macro_deps = depset(proc_macro_deps),
srcs = depset(srcs),
**crate_info_dict
)

Expand Down
4 changes: 2 additions & 2 deletions test/unit/consistent_crate_name/with_modified_crate_name.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ load("//rust/private:rustc.bzl", "rustc_compile_action")
def _with_modified_crate_name_impl(ctx):
toolchain = ctx.toolchains[Label("//rust:toolchain_type")]

crate_root = ctx.attr.src.files.to_list()[0]
crate_root = ctx.file.src
output_hash = repr(hash(crate_root.path))
crate_name = ctx.label.name + "_my_custom_crate_suffix"
crate_type = "rlib"
Expand Down Expand Up @@ -39,7 +39,7 @@ def _with_modified_crate_name_impl(ctx):
name = crate_name,
type = crate_type,
root = crate_root,
srcs = ctx.attr.src.files,
srcs = ctx.files.src,
deps = deps,
proc_macro_deps = [],
aliases = {},
Expand Down
2 changes: 1 addition & 1 deletion test/unit/force_all_deps_direct/generator.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def _generator_impl(ctx):
name = crate_name,
type = crate_type,
root = rs_file,
srcs = depset([rs_file]),
srcs = [rs_file],
deps = deps,
proc_macro_deps = [],
aliases = {},
Expand Down
2 changes: 1 addition & 1 deletion test/unit/pipelined_compilation/wrap.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def _wrap_impl(ctx):
name = crate_name,
type = crate_type,
root = rs_file,
srcs = depset([rs_file]),
srcs = [rs_file],
deps = deps,
proc_macro_deps = [],
aliases = {},
Expand Down