Skip to content

Commit

Permalink
Remove crate_info attr
Browse files Browse the repository at this point in the history
  • Loading branch information
Vinh Tran committed Oct 9, 2023
1 parent e43d2f2 commit 186c9c2
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 33 deletions.
28 changes: 20 additions & 8 deletions rust/private/rust.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -176,16 +176,22 @@ def _rust_library_common(ctx, crate_type):
sibling = rust_lib,
)

return rustc_compile_action(
crate_info_dict = create_crate_info_dict(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
output_hash = output_hash,
crate_type = crate_type,
rust_metadata = rust_metadata,
output_file = rust_lib,
)

return rustc_compile_action(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
output_hash = output_hash,
crate_info_dict = crate_info_dict,
)

def _rust_binary_impl(ctx):
"""The implementation of the `rust_binary` rule
Expand All @@ -200,14 +206,20 @@ def _rust_binary_impl(ctx):

output = ctx.actions.declare_file(ctx.label.name + toolchain.binary_ext)

return rustc_compile_action(
crate_info_dict = create_crate_info_dict(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
crate_type = ctx.attr.crate_type,
output_file = output,
)

return rustc_compile_action(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
crate_info_dict = crate_info_dict,
)

def _rust_test_impl(ctx):
"""The implementation of the `rust_test` rule.
Expand Down Expand Up @@ -263,7 +275,7 @@ def _rust_test_impl(ctx):
))

# Build the test binary using the dependency's srcs.
crate_info = rust_common.create_crate_info(
crate_info_dict = dict(
name = crate.name,
type = crate_type,
root = crate.root,
Expand Down Expand Up @@ -307,7 +319,7 @@ def _rust_test_impl(ctx):
)

# Target is a standalone crate. Build the test binary as its own crate.
crate_info = rust_common.create_crate_info(
crate_info_dict = dict(
name = compute_crate_name(ctx.workspace_name, ctx.label, toolchain, ctx.attr.crate_name),
type = crate_type,
root = crate_root,
Expand All @@ -330,7 +342,7 @@ def _rust_test_impl(ctx):
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
crate_info = crate_info,
crate_info_dict = crate_info_dict,
rust_flags = ["--test"] if ctx.attr.use_libtest_harness else ["--cfg", "test"],
skip_expanding_rustc_env = True,
)
Expand Down
31 changes: 7 additions & 24 deletions rust/private/rustc.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -1086,12 +1086,8 @@ def rustc_compile_action(
attr,
toolchain,
rust_flags = [],
crate_type = None,
crate_info = None,
output_hash = None,
force_all_deps_direct = False,
rust_metadata = None,
output_file = None,
crate_info_dict = None,
skip_expanding_rustc_env = False):
"""Create and run a rustc compile action based on the current rule's attributes
Expand All @@ -1117,24 +1113,11 @@ def rustc_compile_action(
"""
# TODO: Remove create_crate_info_callback after all rustc_compile_action callers migrate to
# removing CrateInfo construction before `rust_compile_action
crate_info = rust_common.create_crate_info(**crate_info_dict)

# if crate_info == None:
# print(crate_info_dict)

if crate_info == None:
if crate_info_dict:
crate_info = rust_common.create_crate_info(**crate_info_dict)
else:
crate_info_dict = create_crate_info_dict(
ctx = ctx,
toolchain = toolchain,
crate_type = crate_type,
rust_metadata = rust_metadata,
output_file = output_file,
)
crate_info = rust_common.create_crate_info(**crate_info_dict)

build_metadata = getattr(crate_info, "metadata", None)
build_metadata = None
if "metadata" in crate_info_dict:
build_metadata = crate_info_dict["metadata"]

cc_toolchain, feature_configuration = find_cc_toolchain(ctx)

Expand All @@ -1152,9 +1135,9 @@ def rustc_compile_action(
experimental_use_cc_common_link = toolchain._experimental_use_cc_common_link

dep_info, build_info, linkstamps = collect_deps(
deps = crate_info.deps,
proc_macro_deps = crate_info.proc_macro_deps,
aliases = crate_info.aliases,
deps = crate_info_dict["deps"],
proc_macro_deps = crate_info_dict["proc_macro_deps"],
aliases = crate_info_dict["aliases"],
are_linkstamps_supported = _are_linkstamps_supported(
feature_configuration = feature_configuration,
has_grep_includes = hasattr(ctx.attr, "_use_grep_includes"),
Expand Down
2 changes: 1 addition & 1 deletion rust/private/utils.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ def _symlink_for_non_generated_source(ctx, src_file, package_root):
else:
return src_file

def create_crate_info_dict(ctx, toolchain, crate_type, rust_metadata, output_file, crate_info_dict = None):
def create_crate_info_dict(ctx, toolchain, crate_type, output_file, rust_metadata = None):
"""Creates a mutable dict() representing CrateInfo provider
create_crate_info_dict is a *temporary* solution until create_crate_info is completely moved into
Expand Down

0 comments on commit 186c9c2

Please sign in to comment.