blob: ce323ba7ad6bb622fbd7b15d4c3da5d6a92be935 [file] [log] [blame]
Adam Snaider1c095c92023-07-08 02:09:58 -04001"Module extensions for using rules_rust with bzlmod"
2
3load(
4 "//rust/private:repository_utils.bzl",
5 "DEFAULT_EXTRA_TARGET_TRIPLES",
6 "DEFAULT_NIGHTLY_VERSION",
7 "DEFAULT_STATIC_RUST_URL_TEMPLATES",
8)
9load(":repositories.bzl", "rust_register_toolchains")
10
11def _rust_impl(ctx):
12 mod = ctx.modules[0]
13 for toolchain in mod.tags.toolchain:
14 rust_register_toolchains(
15 dev_components = toolchain.dev_components,
16 edition = toolchain.edition,
17 allocator_library = toolchain.allocator_library,
18 rustfmt_version = toolchain.rustfmt_version,
19 rust_analyzer_version = toolchain.rust_analyzer_version,
20 sha256s = toolchain.sha256s,
21 extra_target_triples = toolchain.extra_target_triples,
22 urls = toolchain.urls,
23 versions = toolchain.versions,
24 register_toolchains = False,
25 )
26
27rust_toolchain = tag_class(attrs = {
28 "allocator_library": attr.string(),
29 "dev_components": attr.bool(default = False),
30 "edition": attr.string(),
31 "extra_target_triples": attr.string_list(default = DEFAULT_EXTRA_TARGET_TRIPLES),
32 "rust_analyzer_version": attr.string(),
33 "rustfmt_version": attr.string(default = DEFAULT_NIGHTLY_VERSION),
34 "sha256s": attr.string_dict(),
35 "urls": attr.string_list(default = DEFAULT_STATIC_RUST_URL_TEMPLATES),
36 "versions": attr.string_list(default = []),
37})
38
39rust = module_extension(
40 implementation = _rust_impl,
41 tag_classes = {"toolchain": rust_toolchain},
42)