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 5fad717
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 33 deletions.
47 changes: 39 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 @@ -196,16 +202,41 @@ def _rust_binary_impl(ctx):
list: A list of providers. See `rustc_compile_action`
"""
toolchain = find_toolchain(ctx)
crate_name = compute_crate_name(ctx.workspace_name, ctx.label, toolchain, ctx.attr.crate_name)
_assert_correct_dep_mapping(ctx)

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

deps = transform_deps(ctx.attr.deps)
proc_macro_deps = transform_deps(ctx.attr.proc_macro_deps + get_import_macro_deps(ctx))

crate_root = getattr(ctx.file, "crate_root", None)
if not crate_root:
crate_root = crate_root_src(ctx.attr.name, ctx.files.srcs, ctx.attr.crate_type)
srcs, crate_root = transform_sources(ctx, ctx.files.srcs, crate_root)

return rustc_compile_action(
ctx = ctx,
attr = ctx.attr,
toolchain = toolchain,
crate_type = ctx.attr.crate_type,
output_file = output,
crate_info_dict = dict(
name = crate_name,
type = ctx.attr.crate_type,
root = crate_root,
srcs = depset(srcs),
deps = depset(deps),
proc_macro_deps = depset(proc_macro_deps),
aliases = ctx.attr.aliases,
output = output,
edition = get_edition(ctx.attr, toolchain, ctx.label),
_rustc_env_attr = ctx.attr.rustc_env,
rustc_env = ctx.attr.rustc_env,
rustc_env_files = ctx.files.rustc_env_files,
is_test = False,
compile_data = depset(ctx.files.compile_data),
compile_data_targets = depset(ctx.attr.compile_data),
owner = ctx.label,
),
)

def _rust_test_impl(ctx):
Expand Down Expand Up @@ -263,7 +294,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 +338,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 +361,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 5fad717

Please sign in to comment.