Skip to content

Commit 552f702

Browse files
committed
Avoid prematurely turning srcs into a depset before rustc_compile_action
1 parent d91735d commit 552f702

File tree

8 files changed

+33
-30
lines changed

8 files changed

+33
-30
lines changed

extensions/prost/private/prost.bzl

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,33 +78,32 @@ def _compile_proto(
7878

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

8382
# Prost process wrapper specific args
84-
compile_well_known_types = prost_toolchain.compile_well_known_types
85-
additional_args.add("--protoc={}".format(proto_compiler.executable.path))
86-
additional_args.add("--label={}".format(ctx.label))
87-
additional_args.add("--out_librs={}".format(lib_rs.path))
83+
additional_args = ctx.actions.args()
84+
additional_args.add(proto_compiler.executable, format = "--protoc=%s")
85+
additional_args.add(ctx.label, format = "--label=%s")
86+
additional_args.add(lib_rs, format = "--out_librs=%s")
8887
additional_args.add("--package_info_output={}".format("{}={}".format(crate_name, package_info_file.path)))
89-
additional_args.add("--deps_info={}".format(deps_info_file.path))
90-
additional_args.add("--direct_dep_crate_names={}".format(",".join(direct_crate_names)))
91-
if compile_well_known_types:
88+
additional_args.add(deps_info_file, format = "--deps_info=%s")
89+
additional_args.add_joined(direct_crate_names, join_with = ",", format_joined = "--direct_dep_crate_names=%s")
90+
if prost_toolchain.compile_well_known_types:
9291
additional_args.add("--compile_well_known_types")
93-
additional_args.add("--descriptor_set={}".format(proto_info.direct_descriptor_set.path))
94-
additional_args.add("--additional_srcs={}".format(",".join([f.path for f in all_additional_srcs.to_list()])))
92+
additional_args.add(proto_info.direct_descriptor_set, format = "--descriptor_set=%s")
93+
additional_args.add_joined(all_additional_srcs, join_with = ",", format_joined = "--additional_srcs=%s")
9594
additional_args.add_all(prost_toolchain.prost_opts + prost_opts, format_each = "--prost_opt=%s")
9695

9796
if prost_toolchain.tonic_plugin:
9897
tonic_plugin = prost_toolchain.tonic_plugin[DefaultInfo].files_to_run
99-
additional_args.add(prost_toolchain.tonic_plugin_flag % tonic_plugin.executable.path)
98+
additional_args.add(tonic_plugin.executable, format = prost_toolchain.tonic_plugin_flag)
10099
additional_args.add("--tonic_opt=no_include")
101100
additional_args.add("--is_tonic")
102101

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

106105
if rustfmt_toolchain:
107-
additional_args.add("--rustfmt={}".format(rustfmt_toolchain.rustfmt.path))
106+
additional_args.add(rustfmt_toolchain.rustfmt, format = "--rustfmt=%s")
108107
tools = depset(transitive = [tools, rustfmt_toolchain.all_files])
109108

110109
additional_inputs = depset(
@@ -208,7 +207,7 @@ def _compile_rust(
208207
name = crate_name,
209208
type = "rlib",
210209
root = src,
211-
srcs = depset([src]),
210+
srcs = [src],
212211
deps = deps,
213212
proc_macro_deps = [],
214213
aliases = {},

extensions/protobuf/proto.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ def _rust_proto_compile(protos, descriptor_sets, imports, crate_name, ctx, is_gr
228228
name = crate_name,
229229
type = "rlib",
230230
root = lib_rs,
231-
srcs = depset(srcs),
231+
srcs = srcs,
232232
deps = compile_action_deps,
233233
proc_macro_deps = [],
234234
aliases = {},

extensions/wasm_bindgen/private/wasm_bindgen_test.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def _rust_wasm_bindgen_test_impl(ctx):
121121
name = crate.name,
122122
type = crate_type,
123123
root = crate.root,
124-
srcs = depset(srcs, transitive = [crate.srcs]),
124+
srcs = depset(srcs, transitive = [crate.srcs]).to_list(),
125125
deps = depset(deps, transitive = [crate.deps]).to_list(),
126126
proc_macro_deps = depset(proc_macro_deps, transitive = [crate.proc_macro_deps]).to_list(),
127127
aliases = {},

rust/private/rust.bzl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def _rust_library_common(ctx, crate_type):
220220
name = crate_name,
221221
type = crate_type,
222222
root = crate_root,
223-
srcs = depset(srcs),
223+
srcs = srcs,
224224
deps = deps,
225225
proc_macro_deps = proc_macro_deps,
226226
aliases = ctx.attr.aliases,
@@ -285,7 +285,7 @@ def _rust_binary_impl(ctx):
285285
name = crate_name,
286286
type = ctx.attr.crate_type,
287287
root = crate_root,
288-
srcs = depset(srcs),
288+
srcs = srcs,
289289
deps = deps,
290290
proc_macro_deps = proc_macro_deps,
291291
aliases = ctx.attr.aliases,
@@ -417,7 +417,7 @@ def _rust_test_impl(ctx):
417417
name = crate_name,
418418
type = crate_type,
419419
root = crate.root,
420-
srcs = depset(srcs),
420+
srcs = srcs,
421421
deps = depset(deps, transitive = [crate.deps]).to_list(),
422422
proc_macro_deps = depset(proc_macro_deps, transitive = [crate.proc_macro_deps]).to_list(),
423423
aliases = aliases,
@@ -483,7 +483,7 @@ def _rust_test_impl(ctx):
483483
name = crate_name,
484484
type = crate_type,
485485
root = crate_root,
486-
srcs = depset(srcs),
486+
srcs = srcs,
487487
deps = deps,
488488
proc_macro_deps = proc_macro_deps,
489489
aliases = ctx.attr.aliases,

rust/private/rustc.bzl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,15 +1204,18 @@ def rustc_compile_action(
12041204
"""
12051205
deps = crate_info_dict.pop("deps")
12061206
proc_macro_deps = crate_info_dict.pop("proc_macro_deps")
1207+
srcs = crate_info_dict.pop("srcs")
1208+
12071209
crate_info = rust_common.create_crate_info(
12081210
deps = depset(deps),
12091211
proc_macro_deps = depset(proc_macro_deps),
1212+
srcs = depset(srcs),
12101213
**crate_info_dict
12111214
)
12121215

1213-
build_metadata = crate_info_dict.get("metadata", None)
1214-
rustc_output = crate_info_dict.get("rustc_output", None)
1215-
rustc_rmeta_output = crate_info_dict.get("rustc_rmeta_output", None)
1216+
build_metadata = crate_info.metadata
1217+
rustc_output = crate_info.rustc_output
1218+
rustc_rmeta_output = crate_info.rustc_rmeta_output
12161219

12171220
# Determine whether to use cc_common.link:
12181221
# * either if experimental_use_cc_common_link is 1,
@@ -1230,7 +1233,7 @@ def rustc_compile_action(
12301233
dep_info, build_info, linkstamps = collect_deps(
12311234
deps = deps,
12321235
proc_macro_deps = proc_macro_deps,
1233-
aliases = crate_info_dict["aliases"],
1236+
aliases = crate_info.aliases,
12341237
)
12351238
extra_disabled_features = [RUST_LINK_CC_FEATURE]
12361239
if crate_info.type in ["bin", "cdylib"] and dep_info.transitive_noncrates.to_list():
@@ -1399,7 +1402,7 @@ def rustc_compile_action(
13991402
crate_info.type,
14001403
ctx.label.name,
14011404
formatted_version,
1402-
len(crate_info.srcs.to_list()),
1405+
len(srcs),
14031406
),
14041407
toolchain = "@rules_rust//rust:toolchain_type",
14051408
resource_set = get_rustc_resource_set(toolchain),
@@ -1416,7 +1419,7 @@ def rustc_compile_action(
14161419
crate_info.type,
14171420
ctx.label.name,
14181421
formatted_version,
1419-
len(crate_info.srcs.to_list()),
1422+
len(srcs),
14201423
),
14211424
toolchain = "@rules_rust//rust:toolchain_type",
14221425
)
@@ -1435,7 +1438,7 @@ def rustc_compile_action(
14351438
crate_info.type,
14361439
ctx.label.name,
14371440
formatted_version,
1438-
len(crate_info.srcs.to_list()),
1441+
len(srcs),
14391442
),
14401443
toolchain = "@rules_rust//rust:toolchain_type",
14411444
resource_set = get_rustc_resource_set(toolchain),
@@ -1604,6 +1607,7 @@ def rustc_compile_action(
16041607
crate_info = rust_common.create_crate_info(
16051608
deps = depset(deps),
16061609
proc_macro_deps = depset(proc_macro_deps),
1610+
srcs = depset(srcs),
16071611
**crate_info_dict
16081612
)
16091613

test/unit/consistent_crate_name/with_modified_crate_name.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ load("//rust/private:rustc.bzl", "rustc_compile_action")
1111
def _with_modified_crate_name_impl(ctx):
1212
toolchain = ctx.toolchains[Label("//rust:toolchain_type")]
1313

14-
crate_root = ctx.attr.src.files.to_list()[0]
14+
crate_root = ctx.file.src
1515
output_hash = repr(hash(crate_root.path))
1616
crate_name = ctx.label.name + "_my_custom_crate_suffix"
1717
crate_type = "rlib"
@@ -39,7 +39,7 @@ def _with_modified_crate_name_impl(ctx):
3939
name = crate_name,
4040
type = crate_type,
4141
root = crate_root,
42-
srcs = ctx.attr.src.files,
42+
srcs = ctx.files.src,
4343
deps = deps,
4444
proc_macro_deps = [],
4545
aliases = {},

test/unit/force_all_deps_direct/generator.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def _generator_impl(ctx):
5555
name = crate_name,
5656
type = crate_type,
5757
root = rs_file,
58-
srcs = depset([rs_file]),
58+
srcs = [rs_file],
5959
deps = deps,
6060
proc_macro_deps = [],
6161
aliases = {},

test/unit/pipelined_compilation/wrap.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def _wrap_impl(ctx):
6767
name = crate_name,
6868
type = crate_type,
6969
root = rs_file,
70-
srcs = depset([rs_file]),
70+
srcs = [rs_file],
7171
deps = deps,
7272
proc_macro_deps = [],
7373
aliases = {},

0 commit comments

Comments
 (0)