From 186c9c272e5bdacf635dbd5a08b771127e753584 Mon Sep 17 00:00:00 2001 From: Vinh Tran Date: Mon, 9 Oct 2023 19:45:19 +0000 Subject: [PATCH] Remove crate_info attr --- rust/private/rust.bzl | 28 ++++++++++++++++++++-------- rust/private/rustc.bzl | 31 +++++++------------------------ rust/private/utils.bzl | 2 +- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl index 0f2b9a07f8..2192144869 100644 --- a/rust/private/rust.bzl +++ b/rust/private/rust.bzl @@ -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 @@ -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. @@ -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, @@ -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, @@ -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, ) diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl index 29b47efe90..42cb14bb1c 100644 --- a/rust/private/rustc.bzl +++ b/rust/private/rustc.bzl @@ -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 @@ -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) @@ -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"), diff --git a/rust/private/utils.bzl b/rust/private/utils.bzl index 5a6cb456ce..3b919de7cd 100644 --- a/rust/private/utils.bzl +++ b/rust/private/utils.bzl @@ -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