| """Bzlmod module extensions""" |
| |
| load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") |
| load("//basic/3rdparty/crates:crates.bzl", basic_crate_repositories = "crate_repositories") |
| load("//complex/3rdparty/crates:crates.bzl", complex_crate_repositories = "crate_repositories") |
| |
| def _rust_example_impl(module_ctx): |
| # This should contain the subset of WORKSPACE.bazel that defines |
| # repositories. |
| direct_deps = [] |
| |
| direct_deps.extend(basic_crate_repositories()) |
| direct_deps.extend(complex_crate_repositories()) |
| |
| http_archive( |
| name = "libgit2", |
| build_file = Label("//complex/3rdparty:BUILD.libgit2.bazel"), |
| sha256 = "d25866a4ee275a64f65be2d9a663680a5cf1ed87b7ee4c534997562c828e500d", |
| # The version here should match the version used with the Rust crate `libgit2-sys` |
| # https://github.com/rust-lang/git2-rs/tree/libgit2-sys-0.15.2+1.6.4/libgit2-sys |
| strip_prefix = "libgit2-1.6.4", |
| urls = ["https://github.com/libgit2/libgit2/archive/refs/tags/v1.6.4.tar.gz"], |
| ) |
| direct_deps.append(struct(repo = "libgit2")) |
| |
| # is_dev_dep is ignored here. It's not relevant for internal_deps, as dev |
| # dependencies are only relevant for module extensions that can be used |
| # by other MODULES. |
| return module_ctx.extension_metadata( |
| root_module_direct_deps = [repo.repo for repo in direct_deps], |
| root_module_direct_dev_deps = [], |
| ) |
| |
| rust_example = module_extension( |
| doc = "Dependencies for the rules_rust examples.", |
| implementation = _rust_example_impl, |
| ) |