Skip to content

Commit bb7e9b0

Browse files
committed
Addressing review comments (1/2)
1 parent d766c3c commit bb7e9b0

File tree

5 files changed

+24
-49
lines changed

5 files changed

+24
-49
lines changed

rust/private/providers.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ DepInfo = provider(
5050
"transitive_build_infos": "depset[BuildInfo]",
5151
"transitive_crate_outputs": "depset[File]: All transitive crate outputs.",
5252
"transitive_crates": "depset[CrateInfo]",
53-
"transitive_metadata_outputs": "depset[File]: All transitive crate metadata outputs.",
53+
"transitive_metadata_outputs": "depset[File]: All transitive metadata dependencies (.rlib, for crates that provide them) and all transitive object dependencies (.rlib) for crates that don't provide metadata.",
5454
"transitive_noncrates": "depset[LinkerInput]: All transitive dependencies that aren't crates.",
5555
},
5656
)

rust/private/rustc.bzl

Lines changed: 17 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -237,20 +237,16 @@ def collect_deps(
237237
if not crate_info.metadata:
238238
depend_on = crate_info.output
239239

240+
# If this dependency is a proc_macro, it still can be used for lib crates
241+
# that produce metadata.
242+
# In that case, we don't depend on its metadata dependencies.
240243
transitive_metadata_outputs.append(
241244
depset(
242245
[depend_on],
243-
transitive = [dep_info.transitive_metadata_outputs],
246+
transitive = [] if _is_proc_macro(crate_info) else [dep_info.transitive_metadata_outputs],
244247
),
245248
)
246249

247-
# If this dependency is a proc_macro, it still can be used for lib crates
248-
# that produce metadata.
249-
if _is_proc_macro(crate_info):
250-
transitive_metadata_outputs.append(
251-
depset([crate_info.output]),
252-
)
253-
254250
transitive_crate_outputs.append(
255251
depset(
256252
[crate_info.output],
@@ -922,10 +918,10 @@ def construct_arguments(
922918

923919
_add_native_link_flags(rustc_flags, dep_info, linkstamp_outs, ambiguous_libs, crate_info.type, toolchain, cc_toolchain, feature_configuration)
924920

925-
link_to_metadata = _depend_on_metadata(crate_info, force_link_to_objects)
921+
use_metadata = _depend_on_metadata(crate_info, force_link_to_objects)
926922

927923
# These always need to be added, even if not linking this crate.
928-
add_crate_link_flags(rustc_flags, dep_info, force_all_deps_direct, link_to_metadata = link_to_metadata)
924+
add_crate_link_flags(rustc_flags, dep_info, force_all_deps_direct, use_metadata)
929925

930926
needs_extern_proc_macro_flag = _is_proc_macro(crate_info) and crate_info.edition != "2015"
931927
if needs_extern_proc_macro_flag:
@@ -1448,47 +1444,26 @@ def _get_dir_names(files):
14481444
dirs[f.dirname] = None
14491445
return dirs.keys()
14501446

1451-
def add_crate_link_flags(args, dep_info, force_all_deps_direct = False, link_to_metadata = False):
1447+
def add_crate_link_flags(args, dep_info, force_all_deps_direct = False, use_metadata = False):
14521448
"""Adds link flags to an Args object reference
14531449
14541450
Args:
14551451
args (Args): An arguments object reference
14561452
dep_info (DepInfo): The current target's dependency info
14571453
force_all_deps_direct (bool, optional): Whether to pass the transitive rlibs with --extern
14581454
to the commandline as opposed to -L.
1459-
link_to_metadata:
1455+
use_metadata (bool, optional): Build command line arugments using metadata for crates that provide it.
14601456
"""
1461-
# print(" link_to_metadata ", link_to_metadata)
14621457

1463-
if not link_to_metadata:
1464-
if force_all_deps_direct:
1465-
args.add_all(
1466-
depset(
1467-
transitive = [
1468-
dep_info.direct_crates,
1469-
dep_info.transitive_crates,
1470-
],
1471-
),
1472-
uniquify = True,
1473-
map_each = _crate_to_link_flag,
1474-
)
1475-
else:
1476-
# nb. Direct crates are linked via --extern regardless of their crate_type
1477-
args.add_all(dep_info.direct_crates, map_each = _crate_to_link_flag)
1478-
elif force_all_deps_direct:
1479-
args.add_all(
1480-
depset(
1481-
transitive = [
1482-
dep_info.direct_crates,
1483-
dep_info.transitive_crates,
1484-
],
1485-
),
1486-
uniquify = True,
1487-
map_each = _crate_to_link_flag_metadata,
1488-
)
1489-
else:
1490-
# nb. Direct crates are linked via --extern regardless of their crate_type
1491-
args.add_all(dep_info.direct_crates, map_each = _crate_to_link_flag_metadata)
1458+
direct_crates = depset(
1459+
transitive = [
1460+
dep_info.direct_crates,
1461+
dep_info.transitive_crates,
1462+
],
1463+
) if force_all_deps_direct else dep_info.direct_crates
1464+
1465+
crate_to_link_flags = _crate_to_link_flag_metadata if use_metadata else _crate_to_link_flag
1466+
args.add_all(direct_crates, uniquify = True, map_each = crate_to_link_flags)
14921467

14931468
args.add_all(
14941469
dep_info.transitive_crates,

rust/private/rustdoc.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _strip_crate_info_output(crate_info):
3737
aliases = crate_info.aliases,
3838
# This crate info should have no output
3939
output = None,
40-
metadata = crate_info.metadata,
40+
metadata = None,
4141
edition = crate_info.edition,
4242
rustc_env = crate_info.rustc_env,
4343
is_test = crate_info.is_test,

test/unit/pipelined_compilation/pipelined_compilation_test.bzl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,11 @@ def _pipelined_compilation_test():
101101
deps = [":second"],
102102
)
103103

104-
NOT_WINDOWS = [
105-
"@platforms//os:linux",
106-
"@platforms//os:macos",
107-
]
104+
NOT_WINDOWS = select({
105+
"@platforms//os:linux": [],
106+
"@platforms//os:macos": [],
107+
"//conditions:default": ["@platforms//:incompatible"],
108+
})
108109
second_lib_test(name = "second_lib_test", target_under_test = ":second", target_compatible_with = NOT_WINDOWS)
109110
bin_test(name = "bin_test", target_under_test = ":bin", target_compatible_with = NOT_WINDOWS)
110111

util/process_wrapper/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ fn status_code(status: ExitStatus, was_killed: bool) -> i32 {
4040
fn status_code(status: ExitStatus, was_killed: bool) -> i32 {
4141
// On unix, if code is None it means that the process was killed by a signal.
4242
// https://doc.rust-lang.org/std/process/struct.ExitStatus.html#method.success
43-
// eprintln!("{:?} {}", status, was_killed);
4443
match status.code() {
4544
Some(code) => code,
4645
// If we killed the process, we expect None here

0 commit comments

Comments
 (0)