|
| 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 | +) |
0 commit comments