blob: 6f61161eda2f46c42f515c8b0cd30ecb116225b5 [file]
module(
name = "bazel-diff",
version = "40.0.2",
compatibility_level = 0,
)
bazel_dep(name = "aspect_rules_lint", version = "2.1.0", dev_dependency = True)
bazel_dep(name = "buildifier_prebuilt", version = "8.5.1.2", dev_dependency = True)
bazel_dep(name = "aspect_bazel_lib", version = "2.22.5", dev_dependency = True)
bazel_dep(name = "bazel_skylib", version = "1.9.0")
bazel_dep(name = "rules_proto", version = "7.1.0")
bazel_dep(name = "rules_java", version = "9.7.0")
bazel_dep(name = "rules_kotlin", version = "2.4.0")
bazel_dep(name = "rules_license", version = "1.0.0")
# kt_jvm_test hardcodes its _lcov_merger to Bazel's built-in merger instead of
# reading the coverage fragment's output_generator configuration field, so it
# ignores --coverage_output_generator (see tools/coverage/README.md — that flag
# is how per-target coverage minimums are enforced). Patch it to use the
# configuration field, like rules_go/rules_rust/rules_java do. Root-module-only:
# overrides are ignored when bazel-diff is consumed as a dependency.
single_version_override(
module_name = "rules_kotlin",
patch_strip = 1,
patches = ["//tools/coverage:rules_kotlin_lcov_merger.patch"],
)
bazel_dep(name = "rules_jvm_external", version = "6.10")
# Add protobuf and grpc for Bazel 9 compatibility
bazel_dep(name = "protobuf", version = "33.4")
bazel_dep(name = "stardoc", version = "0.7.2")
single_version_override(
module_name = "grpc-java",
version = "1.78.0",
)
bazel_dep(name = "grpc", version = "1.76.0", repo_name = "com_github_grpc_grpc")
# Override transitive dependencies to Bazel 9 compatible versions.
# Marked dev_dependency: these are only needed when building bazel-diff itself
# (as the root module). rules_nodejs and rules_foreign_cc are not referenced by
# any bazel-diff target, and rules_python is supplied transitively (proto codegen)
# regardless, so consumers resolve their own versions via MVS.
bazel_dep(name = "rules_nodejs", version = "6.7.3", dev_dependency = True)
bazel_dep(name = "rules_foreign_cc", version = "0.15.1", dev_dependency = True)
bazel_dep(name = "rules_python", version = "1.8.4", dev_dependency = True)
# Go support is internal to building/testing bazel-diff (tooling under tools/go,
# whose line coverage is gated at >=90% in CI). Marked dev_dependency so consumers
# of bazel-diff as a module don't inherit rules_go/gazelle via MVS.
bazel_dep(name = "rules_go", version = "0.60.0", dev_dependency = True)
bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True)
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk", dev_dependency = True)
go_sdk.download(version = "1.23.1")
# Rust is a first-class published implementation (`//:bazel-diff-rust`) and is
# also used by the LCOV merger under //tools/coverage. Kept as a non-dev
# dependency so BCR consumers and top-level verify_targets can build the Rust
# binary without --ignore_dev_dependency stripping the crate repos/toolchains.
bazel_dep(name = "rules_rust", version = "0.73.0")
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
rust.toolchain(
edition = "2021",
versions = ["1.90.0"],
)
use_repo(rust, "rust_toolchains")
register_toolchains("@rust_toolchains//:all")
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
name = "bazel_diff_maven",
artifacts = [
"com.google.code.gson:gson:2.14.0@jar",
"com.google.guava:guava:33.6.0-jre",
"com.willowtreeapps.assertk:assertk-jvm:0.28.1",
"info.picocli:picocli:4.7.7@jar",
"io.insert-koin:koin-core-jvm:4.2.2",
"io.insert-koin:koin-test-junit4:4.2.2",
"junit:junit:4.13.2",
"org.apache.commons:commons-pool2:2.13.1",
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0",
"org.mockito.kotlin:mockito-kotlin:6.3.0",
"software.amazon.awssdk:url-connection-client:2.46.7",
],
fail_if_repin_required = True,
lock_file = "//:maven_install.json",
)
# AWS SDK for the `serve` S3 hash-cache backend. The Netty/Apache HTTP clients are
# excluded (the service explicitly uses the lightweight url-connection-client above)
# to keep the deploy jar lean. `sts` is runtime-only: DefaultCredentialsProvider needs
# it to assume the pod's IAM role via web identity (IRSA) when running on EKS.
maven.artifact(
name = "bazel_diff_maven",
artifact = "s3",
exclusions = [
"software.amazon.awssdk:netty-nio-client",
"software.amazon.awssdk:apache-client",
"software.amazon.awssdk:apache5-client",
],
group = "software.amazon.awssdk",
version = "2.46.7",
)
maven.artifact(
name = "bazel_diff_maven",
artifact = "sts",
exclusions = [
"software.amazon.awssdk:netty-nio-client",
"software.amazon.awssdk:apache-client",
"software.amazon.awssdk:apache5-client",
],
group = "software.amazon.awssdk",
version = "2.46.7",
)
use_repo(
maven,
bazel_diff_maven = "bazel_diff_maven",
)
non_module_repositories = use_extension("//:extensions.bzl", "non_module_repositories", dev_dependency = True)
use_repo(non_module_repositories, "ktfmt")
register_toolchains("//:kotlin_toolchain")
crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate")
crate.from_cargo(
name = "bazel_diff_crates",
cargo_lockfile = "//:Cargo.lock",
# crate_universe refuses to run from_cargo in a non-root module without a
# checked-in cargo-bazel lockfile (repinning can't cross module boundaries),
# so BCR consumers need this file shipped in the release archive.
# Regenerate with: CARGO_BAZEL_REPIN=1 bazel sync --only=bazel_diff_crates
lockfile = "//:cargo-bazel-lock.json",
manifests = ["//:Cargo.toml"],
)
use_repo(crate, "bazel_diff_crates")