blob: 44a3f252f5e7aaf79f778b62107e3205a0cc8455 [file]
module(
name = "rules_rs_mutants",
version = "0.0.1",
bazel_compatibility = [">=7.7.0"],
)
bazel_dep(name = "rules_rs", version = "0.0.106")
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "hermetic_launcher", version = "0.0.8")
bazel_dep(name = "platforms", version = "1.1.0")
# The aspect reuses rules_rust's own `rustc_compile` internals to reconstruct
# the command line, so it needs the same @rules_rust that rules_rs vends.
rules_rust = use_extension("@rules_rs//rs:rules_rust.bzl", "rules_rust")
use_repo(rules_rust, "rules_rust")
crate = use_extension("@rules_rs//rs:extensions.bzl", "crate")
crate.from_cargo(
name = "rrsmut",
cargo_lock = "//mutants/private:Cargo.lock",
cargo_toml = "//mutants/private:Cargo.toml",
platform_triples = [
"aarch64-apple-darwin",
"aarch64-pc-windows-gnullvm",
"aarch64-pc-windows-msvc",
"aarch64-unknown-linux-gnu",
"aarch64-unknown-linux-musl",
"x86_64-apple-darwin",
"x86_64-pc-windows-gnullvm",
"x86_64-pc-windows-msvc",
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
],
)
use_repo(crate, "rrsmut")
############################ Development only ############################
# cargo-mutants itself is a dev dependency: consumers point
# `//mutants:cargo_mutants_binary` at a build from their own lockfile.
dev_crate = use_extension(
"@rules_rs//rs:extensions.bzl",
"crate",
dev_dependency = True,
)
dev_crate.from_cargo(
name = "mutants",
cargo_lock = "//example:Cargo.lock",
cargo_toml = "//example:Cargo.toml",
platform_triples = [
"aarch64-apple-darwin",
"aarch64-pc-windows-gnullvm",
"aarch64-unknown-linux-gnu",
"x86_64-apple-darwin",
"x86_64-pc-windows-gnullvm",
"x86_64-unknown-linux-gnu",
],
)
dev_crate.annotation(
crate = "cargo-mutants",
gen_binaries = ["cargo-mutants"],
repositories = ["mutants"],
)
use_repo(dev_crate, "mutants")
toolchains = use_extension(
"@rules_rs//rs/toolchains:module_extension.bzl",
"toolchains",
dev_dependency = True,
)
toolchains.toolchain(
edition = "2024",
version = "1.96.1",
)
use_repo(toolchains, "default_rust_toolchains")
register_toolchains(
"@default_rust_toolchains//...",
dev_dependency = True,
)
bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.1", dev_dependency = True)
# A hermetic C++ toolchain, not the host one. The replay runs rustc outside of
# a Bazel action, so it never gets the `DEVELOPER_DIR`/`SDKROOT` that Bazel's
# XcodeLocalEnvProvider injects into apple_support's `cc_wrapper.sh` at
# execution time — under the host toolchain, linking a mutant on macOS fails
# with `Error: DEVELOPER_DIR not set`. The llvm toolchain links with a real
# binary and no such ambient state.
bazel_dep(name = "llvm", version = "0.8.18", dev_dependency = True)
register_toolchains(
"@llvm//toolchain:all",
dev_dependency = True,
)