Adam Snaider | 1c095c9 | 2023-07-08 02:09:58 -0400 | [diff] [blame^] | 1 | "Module extensions for using rules_rust with bzlmod" |
| 2 | |
| 3 | load( |
| 4 | "//rust/private:repository_utils.bzl", |
| 5 | "DEFAULT_EXTRA_TARGET_TRIPLES", |
| 6 | "DEFAULT_NIGHTLY_VERSION", |
| 7 | "DEFAULT_STATIC_RUST_URL_TEMPLATES", |
| 8 | ) |
| 9 | load(":repositories.bzl", "rust_register_toolchains") |
| 10 | |
| 11 | def _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 | |
| 27 | rust_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 | |
| 39 | rust = module_extension( |
| 40 | implementation = _rust_impl, |
| 41 | tag_classes = {"toolchain": rust_toolchain}, |
| 42 | ) |