Skip to content

Commit

Permalink
Revert "Move DepInfo definition into rust_common (bazelbuild#631)"
Browse files Browse the repository at this point in the history
This reverts commit 2109a0a.

Works around bazelbuild#635.
  • Loading branch information
illicitonion committed Mar 25, 2021
1 parent 9ece272 commit b6d4e4f
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 37 deletions.
11 changes: 5 additions & 6 deletions cargo/cargo_build_script.bzl
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
# buildifier: disable=module-docstring
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "C_COMPILE_ACTION_NAME")
load("@bazel_tools//tools/cpp:toolchain_utils.bzl", "find_cpp_toolchain")
load("//rust:defs.bzl", "rust_common")
load("//rust:rust.bzl", "rust_binary")

# buildifier: disable=bzl-visibility
load("//rust/private:rust.bzl", "name_to_crate_name")

# buildifier: disable=bzl-visibility
load("//rust/private:rustc.bzl", "BuildInfo", "get_compilation_mode_opts", "get_linker_and_args")
load("//rust/private:rustc.bzl", "BuildInfo", "DepInfo", "get_compilation_mode_opts", "get_linker_and_args")

# buildifier: disable=bzl-visibility
load("//rust/private:utils.bzl", "expand_locations", "find_cc_toolchain", "find_toolchain")
Expand Down Expand Up @@ -162,11 +161,11 @@ def _build_script_impl(ctx):
])
build_script_inputs = []
for dep in ctx.attr.deps:
if rust_common.dep_info in dep and dep[rust_common.dep_info].dep_env:
dep_env_file = dep[rust_common.dep_info].dep_env
if DepInfo in dep and dep[DepInfo].dep_env:
dep_env_file = dep[DepInfo].dep_env
args.add(dep_env_file.path)
build_script_inputs.append(dep_env_file)
for dep_build_info in dep[rust_common.dep_info].transitive_build_infos.to_list():
for dep_build_info in dep[DepInfo].transitive_build_infos.to_list():
build_script_inputs.append(dep_build_info.out_dir)

ctx.actions.run(
Expand Down Expand Up @@ -212,7 +211,7 @@ _build_script_run = rule(
),
"deps": attr.label_list(
doc = "The Rust dependencies of the crate defined by `crate_name`",
providers = [rust_common.dep_info],
providers = [DepInfo],
),
"links": attr.string(
doc = "The name of the native library this crate links against.",
Expand Down
7 changes: 3 additions & 4 deletions docs/flatten.md
Original file line number Diff line number Diff line change
Expand Up @@ -1011,9 +1011,9 @@ Run the test with `bazel build //hello_lib:hello_lib_test`.
## rust_toolchain

<pre>
rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-allocator_library">allocator_library</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>,
<a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-os">os</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_lib">rust_lib</a>, <a href="#rust_toolchain-rustc">rustc</a>,
<a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustc_src">rustc_src</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>, <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>,
<a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-os">os</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_lib">rust_lib</a>, <a href="#rust_toolchain-rustc">rustc</a>, <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustc_src">rustc_src</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>,
<a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
</pre>

Declares a Rust toolchain for use.
Expand Down Expand Up @@ -1063,7 +1063,6 @@ See @rules_rust//rust:repositories.bzl for examples of defining the @rust_cpuX r
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain-name"></a>name | A unique name for this target. | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required | |
| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
| <a id="rust_toolchain-binary_ext"></a>binary_ext | The extension for binaries created from rustc. | String | required | |
| <a id="rust_toolchain-cargo"></a>cargo | The location of the <code>cargo</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
| <a id="rust_toolchain-clippy_driver"></a>clippy_driver | The location of the <code>clippy-driver</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
Expand Down
7 changes: 3 additions & 4 deletions docs/rust_repositories.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
## rust_toolchain

<pre>
rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-allocator_library">allocator_library</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>,
<a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>, <a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-os">os</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_lib">rust_lib</a>, <a href="#rust_toolchain-rustc">rustc</a>,
<a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustc_src">rustc_src</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>, <a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
rust_toolchain(<a href="#rust_toolchain-name">name</a>, <a href="#rust_toolchain-binary_ext">binary_ext</a>, <a href="#rust_toolchain-cargo">cargo</a>, <a href="#rust_toolchain-clippy_driver">clippy_driver</a>, <a href="#rust_toolchain-debug_info">debug_info</a>, <a href="#rust_toolchain-default_edition">default_edition</a>, <a href="#rust_toolchain-dylib_ext">dylib_ext</a>,
<a href="#rust_toolchain-exec_triple">exec_triple</a>, <a href="#rust_toolchain-opt_level">opt_level</a>, <a href="#rust_toolchain-os">os</a>, <a href="#rust_toolchain-rust_doc">rust_doc</a>, <a href="#rust_toolchain-rust_lib">rust_lib</a>, <a href="#rust_toolchain-rustc">rustc</a>, <a href="#rust_toolchain-rustc_lib">rustc_lib</a>, <a href="#rust_toolchain-rustc_src">rustc_src</a>, <a href="#rust_toolchain-rustfmt">rustfmt</a>,
<a href="#rust_toolchain-staticlib_ext">staticlib_ext</a>, <a href="#rust_toolchain-stdlib_linkflags">stdlib_linkflags</a>, <a href="#rust_toolchain-target_triple">target_triple</a>)
</pre>

Declares a Rust toolchain for use.
Expand Down Expand Up @@ -62,7 +62,6 @@ See @rules_rust//rust:repositories.bzl for examples of defining the @rust_cpuX r
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="rust_toolchain-name"></a>name | A unique name for this target. | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required | |
| <a id="rust_toolchain-allocator_library"></a>allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
| <a id="rust_toolchain-binary_ext"></a>binary_ext | The extension for binaries created from rustc. | String | required | |
| <a id="rust_toolchain-cargo"></a>cargo | The location of the <code>cargo</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
| <a id="rust_toolchain-clippy_driver"></a>clippy_driver | The location of the <code>clippy-driver</code> binary. Can be a direct source or a filegroup containing one item. | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | optional | None |
Expand Down
3 changes: 1 addition & 2 deletions rust/private/common.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@ which exports the `rust_common` struct.
In the Bazel lingo, `rust_common` gives the access to the Rust Sandwich API.
"""

load(":providers.bzl", "CrateInfo", "DepInfo")
load(":providers.bzl", "CrateInfo")

rust_common = struct(
crate_info = CrateInfo,
dep_info = DepInfo,
)
12 changes: 0 additions & 12 deletions rust/private/providers.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,3 @@ CrateInfo = provider(
"type": "str: The type of this crate. eg. lib or bin",
},
)

DepInfo = provider(
doc = "A provider containing information about a Crate's dependencies.",
fields = {
"dep_env": "File: File with environment variables direct dependencies build scripts rely upon.",
"direct_crates": "depset[CrateInfo]",
"transitive_build_infos": "depset[BuildInfo]",
"transitive_crates": "depset[CrateInfo]",
"transitive_libs": "List[File]: All transitive dependencies, not filtered by type.",
"transitive_noncrates": "depset[LinkerInput]: All transitive dependencies that aren't crates.",
},
)
22 changes: 17 additions & 5 deletions rust/private/rustc.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ AliasableDepInfo = provider(
},
)

DepInfo = provider(
doc = "A provider containing information about a Crate's dependencies.",
fields = {
"dep_env": "File: File with environment variables direct dependencies build scripts rely upon.",
"direct_crates": "depset[CrateInfo]",
"transitive_build_infos": "depset[BuildInfo]",
"transitive_crates": "depset[CrateInfo]",
"transitive_libs": "List[File]: All transitive dependencies, not filtered by type.",
"transitive_noncrates": "depset[LinkerInput]: All transitive dependencies that aren't crates.",
},
)

_error_format_values = ["human", "json", "short"]

ErrorFormatInfo = provider(
Expand Down Expand Up @@ -151,10 +163,10 @@ def collect_deps(label, deps, proc_macro_deps, aliases, toolchain):
dep = direct_dep,
))

transitive_crates.append(depset([dep[rust_common.crate_info]], transitive = [dep[rust_common.dep_info].transitive_crates]))
transitive_noncrates.append(dep[rust_common.dep_info].transitive_noncrates)
transitive_noncrate_libs.append(depset(dep[rust_common.dep_info].transitive_libs))
transitive_build_infos.append(dep[rust_common.dep_info].transitive_build_infos)
transitive_crates.append(depset([dep[rust_common.crate_info]], transitive = [dep[DepInfo].transitive_crates]))
transitive_noncrates.append(dep[DepInfo].transitive_noncrates)
transitive_noncrate_libs.append(depset(dep[DepInfo].transitive_libs))
transitive_build_infos.append(dep[DepInfo].transitive_build_infos)
elif CcInfo in dep:
# This dependency is a cc_library

Expand All @@ -178,7 +190,7 @@ def collect_deps(label, deps, proc_macro_deps, aliases, toolchain):
)

return (
rust_common.dep_info(
DepInfo(
direct_crates = depset(direct_crates),
transitive_crates = transitive_crates_depset,
transitive_noncrates = depset(
Expand Down
4 changes: 2 additions & 2 deletions rust/private/rustdoc.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

# buildifier: disable=module-docstring
load("//rust/private:common.bzl", "rust_common")
load("//rust/private:rustc.bzl", "add_crate_link_flags", "add_edition_flags")
load("//rust/private:rustc.bzl", "DepInfo", "add_crate_link_flags", "add_edition_flags")
load("//rust/private:utils.bzl", "find_toolchain")

_rust_doc_doc = """Generates code documentation.
Expand Down Expand Up @@ -66,7 +66,7 @@ def _rust_doc_impl(ctx):
fail("Expected rust_library or rust_binary.", "dep")

crate = ctx.attr.dep[rust_common.crate_info]
dep_info = ctx.attr.dep[rust_common.dep_info]
dep_info = ctx.attr.dep[DepInfo]

toolchain = find_toolchain(ctx)

Expand Down
3 changes: 2 additions & 1 deletion rust/private/rustdoc_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

# buildifier: disable=module-docstring
load("//rust/private:common.bzl", "rust_common")
load("//rust/private:rustc.bzl", "DepInfo")
load("//rust/private:utils.bzl", "find_toolchain", "get_lib_name", "get_preferred_artifact")

def _rust_doc_test_impl(ctx):
Expand All @@ -32,7 +33,7 @@ def _rust_doc_test_impl(ctx):

toolchain = find_toolchain(ctx)

dep_info = ctx.attr.dep[rust_common.dep_info]
dep_info = ctx.attr.dep[DepInfo]

# Construct rustdoc test command, which will be written to a shell script
# to be executed to run the test.
Expand Down
1 change: 0 additions & 1 deletion test/unit/stdlib_ordering/stdlib_ordering.bzl
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
"""Unittest to verify ordering of rust stdlib in rust_library() CcInfo"""

load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts")
load("//rust:defs.bzl", "rust_library")

Expand Down

0 comments on commit b6d4e4f

Please sign in to comment.