Skip to content

Commit 5311038

Browse files
committed
Make dep_variant_infos a list, not a depset
1 parent d91735d commit 5311038

File tree

5 files changed

+50
-61
lines changed

5 files changed

+50
-61
lines changed

cargo/private/cargo_build_script.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ def _cargo_build_script_impl(ctx):
558558
else:
559559
dep_infos = [
560560
dep_variant_info.dep_info
561-
for dep_variant_info in dep[CrateGroupInfo].dep_variant_infos.to_list()
561+
for dep_variant_info in dep[CrateGroupInfo].dep_variant_infos
562562
if dep_variant_info.dep_info
563563
]
564564

extensions/prost/private/prost.bzl

Lines changed: 35 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
44
load("@rules_proto//proto:defs.bzl", "ProtoInfo", "proto_common")
55
load("@rules_proto//proto:proto_common.bzl", proto_toolchains = "toolchains")
6-
load("@rules_rust//rust:defs.bzl", "rust_analyzer_aspect", "rust_common")
6+
load("@rules_rust//rust:defs.bzl", "rust_analyzer_aspect")
77

88
# buildifier: disable=bzl-visibility
9-
load("@rules_rust//rust/private:providers.bzl", "RustAnalyzerGroupInfo", "RustAnalyzerInfo")
9+
load("@rules_rust//rust/private:providers.bzl", "CrateGroupInfo", "CrateInfo", "DepInfo", "DepVariantInfo", "RustAnalyzerGroupInfo", "RustAnalyzerInfo")
1010

1111
# buildifier: disable=bzl-visibility
1212
load("@rules_rust//rust/private:rust.bzl", "RUSTC_ATTRS")
@@ -230,7 +230,7 @@ def _compile_rust(
230230
dep_info = _get_dep_info(providers)
231231
cc_info = _get_cc_info(providers)
232232

233-
return rust_common.dep_variant_info(
233+
return DepVariantInfo(
234234
crate_info = crate_info,
235235
dep_info = dep_info,
236236
cc_info = cc_info,
@@ -252,13 +252,13 @@ def _rust_prost_aspect_impl(target, ctx):
252252
for prost_runtime in runtimes:
253253
if not prost_runtime:
254254
continue
255-
if rust_common.crate_group_info in prost_runtime:
256-
crate_group_info = prost_runtime[rust_common.crate_group_info]
257-
runtime_deps.extend(crate_group_info.dep_variant_infos.to_list())
255+
if CrateGroupInfo in prost_runtime:
256+
crate_group_info = prost_runtime[CrateGroupInfo]
257+
runtime_deps.extend(crate_group_info.dep_variant_infos)
258258
else:
259-
runtime_deps.append(rust_common.dep_variant_info(
260-
crate_info = prost_runtime[rust_common.crate_info] if rust_common.crate_info in prost_runtime else None,
261-
dep_info = prost_runtime[rust_common.dep_info] if rust_common.dep_info in prost_runtime else None,
259+
runtime_deps.append(DepVariantInfo(
260+
crate_info = prost_runtime[CrateInfo] if CrateInfo in prost_runtime else None,
261+
dep_info = prost_runtime[DepInfo] if DepInfo in prost_runtime else None,
262262
cc_info = prost_runtime[CcInfo] if CcInfo in prost_runtime else None,
263263
build_info = None,
264264
))
@@ -269,26 +269,24 @@ def _rust_prost_aspect_impl(target, ctx):
269269

270270
proto_deps = getattr(ctx.rule.attr, "deps", [])
271271

272-
direct_deps = []
273-
transitive_deps = [depset(runtime_deps)]
272+
direct_deps = list(runtime_deps)
273+
transitive_deps = []
274274
for proto_dep in proto_deps:
275275
proto_info = proto_dep[ProstProtoInfo]
276276

277277
direct_deps.append(proto_info.dep_variant_info)
278-
transitive_deps.append(depset(
279-
[proto_info.dep_variant_info],
280-
transitive = [proto_info.transitive_dep_infos],
281-
))
278+
transitive_deps.append(proto_info.transitive_dep_infos)
282279

283280
if RustAnalyzerInfo in proto_dep:
284281
rust_analyzer_deps.append(proto_dep[RustAnalyzerInfo])
285282

286-
transform_infos = []
287-
for data_target in getattr(ctx.rule.attr, "data", []):
288-
if ProstTransformInfo in data_target:
289-
transform_infos.append(data_target[ProstTransformInfo])
283+
transform_infos = [
284+
data_target[ProstTransformInfo]
285+
for data_target in getattr(ctx.rule.attr, "data", [])
286+
if ProstTransformInfo in data_target
287+
]
290288

291-
rust_deps = runtime_deps + direct_deps
289+
rust_deps = list(direct_deps)
292290
crate_name_overrides = []
293291
for transform_info in transform_infos:
294292
rust_deps.extend(transform_info.deps)
@@ -352,7 +350,7 @@ def _rust_prost_aspect_impl(target, ctx):
352350
return [
353351
ProstProtoInfo(
354352
dep_variant_info = dep_variant_info,
355-
transitive_dep_infos = depset(transitive = transitive_deps),
353+
transitive_dep_infos = depset(direct_deps, transitive = transitive_deps),
356354
package_info = package_info_file,
357355
),
358356
rust_analyzer_info,
@@ -408,18 +406,14 @@ def _rust_prost_library_impl(ctx):
408406

409407
prost_toolchain = ctx.toolchains[TOOLCHAIN_TYPE]
410408

411-
transitive = []
409+
dep_variant_infos = [dep_variant_info]
410+
412411
if prost_toolchain.include_transitive_deps:
413-
transitive = [rust_proto_info.transitive_dep_infos]
412+
dep_variant_infos = depset(dep_variant_infos, transitive = [rust_proto_info.transitive_dep_infos]).to_list()
414413

415414
return [
416415
DefaultInfo(files = depset([dep_variant_info.crate_info.output])),
417-
rust_common.crate_group_info(
418-
dep_variant_infos = depset(
419-
[dep_variant_info],
420-
transitive = transitive,
421-
),
422-
),
416+
CrateGroupInfo(dep_variant_infos = dep_variant_infos),
423417
OutputGroupInfo(
424418
rust_generated_srcs = rust_generated_srcs,
425419
proto_descriptor_set = proto_descriptor_set,
@@ -444,7 +438,7 @@ rust_prost_library = rule(
444438
),
445439
},
446440
provides = [
447-
rust_common.crate_group_info,
441+
CrateGroupInfo,
448442
],
449443
toolchains = [
450444
TOOLCHAIN_TYPE,
@@ -513,13 +507,13 @@ rust_prost_toolchain = rule(
513507
),
514508
"prost_runtime": attr.label(
515509
doc = "The Prost runtime crates to use.",
516-
providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
510+
providers = [[CrateInfo], [CrateGroupInfo]],
517511
mandatory = True,
518512
aspects = [rust_analyzer_aspect],
519513
),
520514
"prost_types": attr.label(
521515
doc = "The Prost types crates to use.",
522-
providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
516+
providers = [[CrateInfo], [CrateGroupInfo]],
523517
mandatory = True,
524518
),
525519
"proto_compiler": attr.label(
@@ -541,7 +535,7 @@ rust_prost_toolchain = rule(
541535
),
542536
"tonic_runtime": attr.label(
543537
doc = "The Tonic runtime crates to use.",
544-
providers = [[rust_common.crate_info], [rust_common.crate_group_info]],
538+
providers = [[CrateInfo], [CrateGroupInfo]],
545539
aspects = [rust_analyzer_aspect],
546540
),
547541
}, **proto_toolchains.if_legacy_toolchain({
@@ -555,27 +549,24 @@ rust_prost_toolchain = rule(
555549
def _current_prost_runtime_impl(ctx):
556550
toolchain = ctx.toolchains[TOOLCHAIN_TYPE]
557551

558-
runtime_deps = []
552+
dep_variant_infos = []
559553

560554
for target in [toolchain.prost_runtime, toolchain.prost_types]:
561-
if rust_common.crate_group_info in target:
562-
crate_group_info = target[rust_common.crate_group_info]
563-
runtime_deps.extend(crate_group_info.dep_variant_infos.to_list())
555+
if CrateGroupInfo in target:
556+
dep_variant_infos.extend(target[CrateGroupInfo].dep_variant_infos)
564557
else:
565-
runtime_deps.append(rust_common.dep_variant_info(
566-
crate_info = target[rust_common.crate_info] if rust_common.crate_info in target else None,
567-
dep_info = target[rust_common.dep_info] if rust_common.dep_info in target else None,
558+
dep_variant_infos.append(DepVariantInfo(
559+
crate_info = target[CrateInfo] if CrateInfo in target else None,
560+
dep_info = target[DepInfo] if DepInfo in target else None,
568561
cc_info = target[CcInfo] if CcInfo in target else None,
569562
build_info = None,
570563
))
571564

572-
return [rust_common.crate_group_info(
573-
dep_variant_infos = depset(runtime_deps),
574-
)]
565+
return [CrateGroupInfo(dep_variant_infos = dep_variant_infos)]
575566

576567
current_prost_runtime = rule(
577568
doc = "A rule for accessing the current Prost toolchain components needed by the process wrapper.",
578-
provides = [rust_common.crate_group_info],
569+
provides = [CrateGroupInfo],
579570
implementation = _current_prost_runtime_impl,
580571
toolchains = [TOOLCHAIN_TYPE],
581572
)

rust/private/rust.bzl

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ load(
2525
"BuildInfo",
2626
"CrateGroupInfo",
2727
"CrateInfo",
28+
"DepInfo",
29+
"DepVariantInfo",
2830
"LintsInfo",
2931
)
3032
load("//rust/private:rustc.bzl", "collect_extra_rustc_flags", "is_no_std", "rustc_compile_action")
@@ -78,7 +80,7 @@ def _assert_correct_dep_mapping(ctx):
7880
else:
7981
types = [
8082
dep_variant_info.crate_info.type
81-
for dep_variant_info in dep[CrateGroupInfo].dep_variant_infos.to_list()
83+
for dep_variant_info in dep[CrateGroupInfo].dep_variant_infos
8284
if dep_variant_info.crate_info
8385
]
8486

@@ -546,30 +548,27 @@ def _rust_test_impl(ctx):
546548

547549
def _rust_library_group_impl(ctx):
548550
dep_variant_infos = []
549-
dep_variant_transitive_infos = []
550551
runfiles = []
551552

552553
for dep in ctx.attr.deps:
553-
if rust_common.crate_info in dep:
554-
dep_variant_infos.append(rust_common.dep_variant_info(
555-
crate_info = dep[rust_common.crate_info] if rust_common.crate_info in dep else None,
556-
dep_info = dep[rust_common.dep_info] if rust_common.crate_info in dep else None,
554+
if CrateInfo in dep:
555+
dep_variant_infos.append(DepVariantInfo(
556+
crate_info = dep[CrateInfo] if CrateInfo in dep else None,
557+
dep_info = dep[DepInfo] if DepInfo in dep else None,
557558
build_info = dep[BuildInfo] if BuildInfo in dep else None,
558559
cc_info = dep[CcInfo] if CcInfo in dep else None,
559560
crate_group_info = None,
560561
))
561-
elif rust_common.crate_group_info in dep:
562-
dep_variant_transitive_infos.append(dep[rust_common.crate_group_info].dep_variant_infos)
562+
elif CrateGroupInfo in dep:
563+
dep_variant_infos.extend(dep[CrateGroupInfo].dep_variant_infos)
563564
else:
564565
fail("crate_group_info targets can only depend on rust_library or rust_library_group targets.")
565566

566567
if dep[DefaultInfo].default_runfiles != None:
567568
runfiles.append(dep[DefaultInfo].default_runfiles)
568569

569570
return [
570-
rust_common.crate_group_info(
571-
dep_variant_infos = depset(dep_variant_infos, transitive = dep_variant_transitive_infos),
572-
),
571+
CrateGroupInfo(dep_variant_infos = dep_variant_infos),
573572
DefaultInfo(runfiles = ctx.runfiles().merge_all(runfiles)),
574573
coverage_common.instrumented_files_info(
575574
ctx,

rust/private/rustc.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ def collect_deps(
267267
for dep in deps + proc_macro_deps:
268268
crate_group = getattr(dep, "crate_group_info", None)
269269
if crate_group:
270-
crate_deps.extend(crate_group.dep_variant_infos.to_list())
270+
crate_deps.extend(crate_group.dep_variant_infos)
271271
else:
272272
crate_deps.append(dep)
273273

test/unit/cc_info/cc_info_test.bzl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
44
load("@rules_cc//cc:defs.bzl", "cc_import", "cc_library")
55
load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
66
load("//rust:defs.bzl", "rust_binary", "rust_common", "rust_library", "rust_proc_macro", "rust_shared_library", "rust_static_library")
7+
load("//rust:rust_common.bzl", "CrateGroupInfo", "DepVariantInfo")
78

89
def _is_dylib_on_windows(ctx):
910
return ctx.target_platform_has_constraint(ctx.attr._windows[platform_common.ConstraintValueInfo])
@@ -178,16 +179,14 @@ def _build_test(ctx):
178179
build_test = analysistest.make(_build_test)
179180

180181
def _rust_cc_injection_impl(ctx):
181-
dep_variant_info = rust_common.dep_variant_info(
182+
dep_variant_info = DepVariantInfo(
182183
cc_info = ctx.attr.cc_dep[CcInfo],
183184
crate_info = None,
184185
dep_info = None,
185186
build_info = None,
186187
)
187188
return [
188-
rust_common.crate_group_info(
189-
dep_variant_infos = depset([dep_variant_info]),
190-
),
189+
CrateGroupInfo(dep_variant_infos = [dep_variant_info]),
191190
]
192191

193192
rust_cc_injection = rule(

0 commit comments

Comments
 (0)