Repository rules for defining Rust dependencies and toolchains.
Dependencies used in the implementation of rules_rust.
Assemble a remote rust_analyzer_toolchain target based on the given params.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | The name of the toolchain proxy repository contianing the registerable toolchain. | none |
| version | The version of the tool among “nightly”, "beta', or an exact version. | none |
| exec_compatible_with | A list of constraints for the execution platform for this toolchain. | [] |
| target_compatible_with | A list of constraints for the target platform for this toolchain. | [] |
| sha256s | A dict associating tool subdirectories to sha256 hashes. See rust_register_toolchains for more details. | None |
| urls | A list of mirror urls containing the tools from the Rust-lang static file server. These must contain the ‘{}’ used to substitute the tool being fetched (using .format). Defaults to [‘https://static.rust-lang.org/dist/{}.tar.xz’] | None |
| auth | Auth object compatible with repository_ctx.download to use when downloading files. See repository_ctx.download for more details. | None |
| netrc | .netrc file to use for authentication; mirrors the eponymous attribute from http_archive | None |
| auth_patterns | Override mapping of hostnames to authorization patterns; mirrors the eponymous attribute from http_archive | None |
RETURNS
str: The name of a registerable rust_analyzer_toolchain.
Emits a default set of toolchains for Linux, MacOS, and Freebsd
Skip this macro and call the rust_repository_set macros directly if you need a compiler for other hosts or for additional target triples.
The sha256s attribute represents a dict associating tool subdirectories to sha256 hashes. As an example:
{ "rust-1.46.0-x86_64-unknown-linux-gnu": "e3b98bc3440fe92817881933f9564389eccb396f5f431f33d48b979fa2fbdcf5", "rustfmt-1.4.12-x86_64-unknown-linux-gnu": "1894e76913303d66bf40885a601462844eec15fca9e76a6d13c390d7000d64b0", "rust-std-1.46.0-x86_64-unknown-linux-gnu": "ac04aef80423f612c0079829b504902de27a6997214eb58ab0765d02f7ec1dbc", }
This would match for exec_triple = "x86_64-unknown-linux-gnu". If not specified, rules_rust pulls from a non-exhaustive list of known checksums..
See load_arbitrary_tool in @rules_rust//rust:repositories.bzl for more details.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| dev_components | Whether to download the rustc-dev components (defaults to False). Requires version to be “nightly”. | False |
| edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every target is required to specify its edition attribute. | None |
| allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | None |
| global_allocator_library | Target that provides allocator functions when global allocator is used with cc_common.link. | None |
| register_toolchains | If true, repositories will be generated to produce and register rust_toolchain targets. | True |
| rustfmt_version | The version of rustfmt. If none is supplied and only a single version in versions is given, then this defaults to that version, otherwise will default to the default nightly version. | None |
| rust_analyzer_version | The version of Rustc to pair with rust-analyzer. | None |
| sha256s | A dict associating tool subdirectories to sha256 hashes. | None |
| extra_target_triples | Additional rust-style targets that rust toolchains should support. | ["wasm32-unknown-unknown", "wasm32-wasip1"] |
| extra_rustc_flags | Dictionary of target triples to list of extra flags to pass to rustc in non-exec configuration. | None |
| extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration. | None |
| urls | A list of mirror urls containing the tools from the Rust-lang static file server. These must contain the ‘{}’ used to substitute the tool being fetched (using .format). | ["https://static.rust-lang.org/dist/{}.tar.xz"] |
| versions | A list of toolchain versions to download. This parameter only accepts one versions per channel. E.g. ["1.65.0", "nightly/2022-11-02", "beta/2020-12-30"]. | ["1.83.0", "nightly/2024-11-28"] |
| aliases | A mapping of “full” repository name to another name to use instead. | {} |
| hub_name | The name of the bzlmod hub repository for toolchains. | None |
| compact_windows_names | Whether or not to produce compact repository names for windows toolchains. This is to avoid MAX_PATH issues. | True |
| toolchain_triples | Mapping of rust target triple -> repository name to create. | {"aarch64-apple-darwin": "rust_darwin_aarch64", "aarch64-pc-windows-msvc": "rust_windows_aarch64", "aarch64-unknown-linux-gnu": "rust_linux_aarch64", "s390x-unknown-linux-gnu": "rust_linux_s390x", "x86_64-apple-darwin": "rust_darwin_x86_64", "x86_64-pc-windows-msvc": "rust_windows_x86_64", "x86_64-unknown-freebsd": "rust_freebsd_x86_64", "x86_64-unknown-linux-gnu": "rust_linux_x86_64"} |
| rustfmt_toolchain_triples | Like toolchain_triples, but for rustfmt toolchains. | {"aarch64-apple-darwin": "rust_darwin_aarch64", "aarch64-pc-windows-msvc": "rust_windows_aarch64", "aarch64-unknown-linux-gnu": "rust_linux_aarch64", "s390x-unknown-linux-gnu": "rust_linux_s390x", "x86_64-apple-darwin": "rust_darwin_x86_64", "x86_64-pc-windows-msvc": "rust_windows_x86_64", "x86_64-unknown-freebsd": "rust_freebsd_x86_64", "x86_64-unknown-linux-gnu": "rust_linux_x86_64"} |
| extra_toolchain_infos | (dict[str, dict], optional): Mapping of information about extra toolchains which were created outside of this call, which should be added to the hub repo. | None |
Deprecated: Use rules_rust_dependencies and rust_register_toolchains directly.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| kwargs | Keyword arguments for the rust_register_toolchains macro. | none |
Assembles a remote repository for the given toolchain params, produces a proxy repository to contain the toolchain declaration, and registers the toolchains.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | The name of the generated repository | none |
| versions | A list of toolchain versions to download. This paramter only accepts one versions per channel. E.g. ["1.65.0", "nightly/2022-11-02", "beta/2020-12-30"]. | none |
| exec_triple | The Rust-style target that this compiler runs on | none |
| target_settings | A list of config_settings that must be satisfied by the target configuration in order for this set of toolchains to be selected during toolchain resolution. | [] |
| allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | None |
| global_allocator_library | Target that provides allocator functions a global allocator is used with cc_common.link. | None |
| extra_target_triples | Additional rust-style targets that this set of toolchains should support. If a map, values should be (optional) target_compatible_with lists for that particular target triple. | {} |
| rustfmt_version | The version of rustfmt to be associated with the toolchain. | None |
| edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every rule is required to specify its edition attribute. | None |
| dev_components | Whether to download the rustc-dev components. Requires version to be “nightly”. | False |
| extra_rustc_flags | Dictionary of target triples to list of extra flags to pass to rustc in non-exec configuration. | None |
| extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration. | None |
| opt_level | Dictionary of target triples to optimiztion config. | None |
| sha256s | A dict associating tool subdirectories to sha256 hashes. See rust_register_toolchains for more details. | None |
| urls | A list of mirror urls containing the tools from the Rust-lang static file server. These must contain the ‘{}’ used to substitute the tool being fetched (using .format). | ["https://static.rust-lang.org/dist/{}.tar.xz"] |
| auth | Auth object compatible with repository_ctx.download to use when downloading files. See repository_ctx.download for more details. | None |
| netrc | .netrc file to use for authentication; mirrors the eponymous attribute from http_archive | None |
| auth_patterns | Override mapping of hostnames to authorization patterns; mirrors the eponymous attribute from http_archive | None |
| register_toolchain | If True, the generated rust_toolchain target will become a registered toolchain. | True |
| exec_compatible_with | A list of constraints for the execution platform for this toolchain. | None |
| default_target_compatible_with | A list of constraints for the target platform for this toolchain when the exec platform is the same as the target platform. | None |
| aliases | Replacement names to use for toolchains created by this macro. | {} |
| compact_windows_names | Whether or not to produce compact repository names for windows toolchains. This is to avoid MAX_PATH issues. | True |
RETURNS
dict[str, dict]: A dict of informations about all generated toolchains.
Assembles a remote repository for the given toolchain params, produces a proxy repository to contain the toolchain declaration, and registers the toolchains.
PARAMETERS
| Name | Description | Default Value |
|---|---|---|
| name | The name of the generated repository | none |
| version | The version of the tool among “nightly”, “beta”, or an exact version. | none |
| exec_triple | The Rust-style target that this compiler runs on. | none |
| target_triple | The Rust-style target to build for. | none |
| exec_compatible_with | A list of constraints for the execution platform for this toolchain. | None |
| target_compatible_with | A list of constraints for the target platform for this toolchain. | None |
| target_settings | A list of config_settings that must be satisfied by the target configuration in order for this toolchain to be selected during toolchain resolution. | [] |
| channel | The channel of the Rust toolchain. | None |
| allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | None |
| global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | None |
| rustfmt_version | The version of rustfmt to be associated with the toolchain. | None |
| edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every rule is required to specify its edition attribute. | None |
| dev_components | Whether to download the rustc-dev components. Requires version to be “nightly”. Defaults to False. | False |
| extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration. | None |
| extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration. | None |
| opt_level | Optimization level config for this toolchain. | None |
| sha256s | A dict associating tool subdirectories to sha256 hashes. See rust_register_toolchains for more details. | None |
| urls | A list of mirror urls containing the tools from the Rust-lang static file server. These must contain the ‘{}’ used to substitute the tool being fetched (using .format). Defaults to [‘https://static.rust-lang.org/dist/{}.tar.xz’] | ["https://static.rust-lang.org/dist/{}.tar.xz"] |
| auth | Auth object compatible with repository_ctx.download to use when downloading files. See repository_ctx.download for more details. | None |
| netrc | .netrc file to use for authentication; mirrors the eponymous attribute from http_archive | None |
| auth_patterns | A list of patterns to match against urls for which the auth object should be used. | None |
RETURNS
dict[str, str]: Information about the registerable toolchain created by this rule.
Generates a toolchain-bearing repository that declares the toolchains from some other rust_toolchain_repository.
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this repository. | Name | required | |
| exec_compatible_with | A list of constraints for the execution platform for this toolchain. | List of strings | optional | [] |
| repo_mapping | In WORKSPACE context only: a dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.For example, an entry "@foo": "@bar" declares that, for any time this repository depends on @foo (such as a dependency on @foo//some:target, it should actually resolve that dependency within globally-declared @bar (@bar//some:target).This attribute is not supported in MODULE.bazel context (when invoking a repository rule inside a module extension's implementation function). | Dictionary: String -> String | optional | |
| target_compatible_with | A list of constraints for the target platform for this toolchain. | List of strings | optional | [] |
| target_settings | A list of config_settings that must be satisfied by the target configuration in order for this toolchain to be selected during toolchain resolution. | List of strings | optional | [] |
| toolchain | The name of the toolchain implementation target. | String | required | |
| toolchain_type | The toolchain type of the toolchain to declare | String | required |
Composes a single workspace containing the toolchain components for compiling on a given platform to a series of target platforms.
A given instance of this rule should be accompanied by a toolchain_repository_proxy invocation to declare its toolchains to Bazel; the indirection allows separating toolchain selection from toolchain fetching.
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this repository. | Name | required | |
| allocator_library | Target that provides allocator functions when rust_library targets are embedded in a cc_binary. | String | optional | "@rules_rust//ffi/cc/allocator_library" |
| auth | Auth object compatible with repository_ctx.download to use when downloading files. See repository_ctx.download for more details. | Dictionary: String -> String | optional | {} |
| auth_patterns | A list of patterns to match against urls for which the auth object should be used. | List of strings | optional | [] |
| dev_components | Whether to download the rustc-dev components (defaults to False). Requires version to be “nightly”. | Boolean | optional | False |
| edition | The rust edition to be used by default (2015, 2018, or 2021). If absent, every rule is required to specify its edition attribute. | String | optional | "" |
| exec_triple | The Rust-style target that this compiler runs on | String | required | |
| extra_exec_rustc_flags | Extra flags to pass to rustc in exec configuration | List of strings | optional | [] |
| extra_rustc_flags | Extra flags to pass to rustc in non-exec configuration | List of strings | optional | [] |
| global_allocator_library | Target that provides allocator functions when a global allocator is used with cc_common.link. | String | optional | "@rules_rust//ffi/cc/global_allocator_library" |
| netrc | .netrc file to use for authentication; mirrors the eponymous attribute from http_archive | String | optional | "" |
| opt_level | Rustc optimization levels. For more details see the documentation for rust_toolchain.opt_level. | Dictionary: String -> String | optional | {} |
| repo_mapping | In WORKSPACE context only: a dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.For example, an entry "@foo": "@bar" declares that, for any time this repository depends on @foo (such as a dependency on @foo//some:target, it should actually resolve that dependency within globally-declared @bar (@bar//some:target).This attribute is not supported in MODULE.bazel context (when invoking a repository rule inside a module extension's implementation function). | Dictionary: String -> String | optional | |
| rustfmt_version | The version of the tool among “nightly”, “beta”, or an exact version. | String | optional | "" |
| sha256s | A dict associating tool subdirectories to sha256 hashes. See rust_register_toolchains for more details. | Dictionary: String -> String | optional | {} |
| target_triple | The Rust-style target that this compiler builds for. | String | required | |
| urls | A list of mirror urls containing the tools from the Rust-lang static file server. These must contain the ‘{}’ used to substitute the tool being fetched (using .format). | List of strings | optional | ["https://static.rust-lang.org/dist/{}.tar.xz"] |
| version | The version of the tool among “nightly”, “beta”, or an exact version. | String | required |