blob: 55cce65fc3e50e4699aabe68ef00853f29f5f807 [file] [log] [blame]
"""Bazel build and test dependencies."""
# NOTE: When editing this file, also update the lockfile.
# bazel mod deps --lockfile_mode=update
module(
name = "bazel",
repo_name = "io_bazel",
)
# =========================================
# Bazel module dependencies
# =========================================
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "grpc", version = "1.66.0.bcr.2", repo_name = "com_github_grpc_grpc")
bazel_dep(name = "grpc-java", version = "1.66.0")
bazel_dep(name = "googleapis", version = "0.0.0-20240819-fe8ba054a")
bazel_dep(name = "platforms", version = "0.0.10")
bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "stardoc", version = "0.7.1", repo_name = "io_bazel_skydoc")
bazel_dep(name = "zstd-jni", version = "1.5.2-3.bcr.1")
bazel_dep(name = "blake3", version = "1.5.1.bcr.1")
bazel_dep(name = "zlib", version = "1.3.1.bcr.3")
bazel_dep(name = "rules_cc", version = "0.0.13")
bazel_dep(name = "rules_java", version = "8.1.0")
bazel_dep(name = "rules_graalvm", version = "0.11.1")
bazel_dep(name = "rules_proto", version = "6.0.2")
bazel_dep(name = "rules_jvm_external", version = "6.0")
bazel_dep(name = "rules_python", version = "0.36.0")
bazel_dep(name = "rules_testing", version = "0.6.0")
bazel_dep(name = "googletest", version = "1.15.2", repo_name = "com_google_googletest")
bazel_dep(name = "with_cfg.bzl", version = "0.2.4")
bazel_dep(name = "abseil-cpp", version = "20240722.0")
bazel_dep(name = "rules_shell", version = "0.1.1")
# TODO: wyv@ - use release 29.0 when that's out
bazel_dep(name = "protobuf", version = "29.0-rc1")
archive_override(
module_name = "protobuf",
integrity = "sha256-tSay4N4FspF+VnsNCTGtMH3xV4ZrtHioxNeB/bjQhsI=",
patch_strip = 1,
# Temporarily patch out rules_rust stuff from protobuf. Not just because we don't need it,
# but also because it introduces huge dependency bloat: rules_rust -> aspect_rules_js ->
# aspect_rules_lint -> rules_buf.
patches = [
"//third_party/protobuf:proto_info_bzl_deps.patch",
"//third_party/protobuf:remove_rules_rust.patch",
"//third_party/protobuf:add_python_loads.patch",
"//third_party/protobuf:add_rules_shell_loads.patch",
"//third_party/protobuf:bzl_library.patch",
],
strip_prefix = "protobuf-29.0-rc1",
urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v29.0-rc1/protobuf-29.0-rc1.zip"],
)
# TODO: wyv@ - add remoteapis to the BCR
bazel_dep(name = "remoteapis", version = "")
# TODO: wyv@ - eventually this part should be unnecessary (after we fix up the googleapis module
# in the BCR)
switched_rules = use_extension("@googleapis//:extensions.bzl", "switched_rules")
switched_rules.use_languages(
cc = True,
go = True,
grpc = True,
java = True,
python = True,
)
single_version_override(
module_name = "rules_jvm_external",
patch_strip = 1,
patches = ["//third_party:rules_jvm_external_6.0.patch"],
version = "6.0",
)
# TODO(pcloudy): Remove once the next version of rules_graalvm is available.
single_version_override(
module_name = "rules_graalvm",
patch_strip = 1,
patches = ["//third_party:rules_graalvm_fix.patch"],
)
local_path_override(
module_name = "remoteapis",
path = "./third_party/remoteapis",
)
# The following Bazel modules are not direct dependencies for building Bazel,
# but are required for visibility from DIST_ARCHIVE_REPOS in repositories.bzl
bazel_dep(name = "apple_support", version = "1.15.1")
bazel_dep(name = "c-ares", version = "1.15.0")
bazel_dep(name = "rules_go", version = "0.48.0")
bazel_dep(name = "rules_kotlin", version = "1.9.6")
# =========================================
# Java dependencies
# =========================================
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
artifacts = [
# keep sorted
"com.beust:jcommander:1.82",
"com.github.ben-manes.caffeine:caffeine:3.0.5",
"com.github.stephenc.jcip:jcip-annotations:1.0-1",
"com.google.api-client:google-api-client:1.35.2",
"com.google.api-client:google-api-client-gson:1.35.2",
"com.google.auth:google-auth-library-credentials:1.6.0",
"com.google.auth:google-auth-library-oauth2-http:1.6.0",
"com.google.auto:auto-common:1.2.1",
"com.google.auto.service:auto-service:1.0",
"com.google.auto.service:auto-service-annotations:1.0.1",
"com.google.auto.value:auto-value:1.11.0",
"com.google.auto.value:auto-value-annotations:1.11.0",
"com.google.code.findbugs:jsr305:3.0.2",
"com.google.code.gson:gson:2.10.1",
"com.google.code.java-allocation-instrumenter:java-allocation-instrumenter:3.3.0",
"com.google.errorprone:error_prone_annotation:2.32.0",
"com.google.errorprone:error_prone_annotations:2.32.0",
"com.google.errorprone:error_prone_check_api:2.32.0",
"com.google.errorprone:error_prone_core:2.32.0",
"com.google.errorprone:error_prone_type_annotations:2.32.0",
"com.google.flogger:flogger:0.5.1",
"com.google.flogger:flogger-system-backend:0.5.1",
"com.google.flogger:google-extensions:0.5.1",
"com.google.guava:failureaccess:1.0.1",
"com.google.guava:guava:33.2.1-jre",
"com.google.http-client:google-http-client:1.42.0",
"com.google.http-client:google-http-client-gson:1.42.0",
"com.google.j2objc:j2objc-annotations:1.3",
"com.google.turbine:turbine:0.7.0",
"com.guardsquare:proguard-base:jar:7.5.0",
"com.ryanharter.auto.value:auto-value-gson-extension:1.3.1",
"com.ryanharter.auto.value:auto-value-gson-factory:1.3.1",
"com.ryanharter.auto.value:auto-value-gson-runtime:1.3.1",
"com.squareup:javapoet:1.12.0",
"commons-collections:commons-collections:3.2.2",
"commons-lang:commons-lang:2.6",
"io.github.java-diff-utils:java-diff-utils:4.12",
"io.grpc:grpc-api:1.66.0",
"io.grpc:grpc-auth:1.66.0",
"io.grpc:grpc-context:1.66.0",
"io.grpc:grpc-core:1.66.0",
"io.grpc:grpc-inprocess:1.66.0",
"io.grpc:grpc-netty:1.66.0",
"io.grpc:grpc-protobuf:1.66.0",
"io.grpc:grpc-protobuf-lite:1.66.0",
"io.grpc:grpc-stub:1.66.0",
"io.netty:netty-buffer:4.1.100.Final",
"io.netty:netty-codec:4.1.100.Final",
"io.netty:netty-codec-http:4.1.100.Final",
"io.netty:netty-codec-http2:4.1.100.Final",
"io.netty:netty-common:4.1.100.Final",
"io.netty:netty-handler:4.1.100.Final",
"io.netty:netty-handler-proxy:4.1.100.Final",
"io.netty:netty-resolver:4.1.100.Final",
"io.netty:netty-resolver-dns:4.1.100.Final",
"io.netty:netty-tcnative-boringssl-static:jar:linux-aarch_64:2.0.56.Final",
"io.netty:netty-tcnative-boringssl-static:jar:linux-x86_64:2.0.56.Final",
"io.netty:netty-tcnative-boringssl-static:jar:osx-aarch_64:2.0.56.Final",
"io.netty:netty-tcnative-boringssl-static:jar:osx-x86_64:2.0.56.Final",
"io.netty:netty-tcnative-boringssl-static:jar:windows-x86_64:2.0.56.Final",
"io.netty:netty-tcnative-classes:2.0.56.Final",
"io.netty:netty-transport:4.1.100.Final",
"io.netty:netty-transport-classes-epoll:4.1.100.Final",
"io.netty:netty-transport-classes-kqueue:4.1.100.Final",
"io.netty:netty-transport-native-epoll:jar:linux-aarch_64:4.1.100.Final",
"io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.100.Final",
"io.netty:netty-transport-native-kqueue:jar:osx-aarch_64:4.1.100.Final",
"io.netty:netty-transport-native-kqueue:jar:osx-x86_64:4.1.100.Final",
"io.netty:netty-transport-native-unix-common:4.1.100.Final",
"io.netty:netty-transport-native-unix-common:jar:linux-aarch_64:4.1.100.Final",
"io.netty:netty-transport-native-unix-common:jar:linux-x86_64:4.1.100.Final",
"io.netty:netty-transport-native-unix-common:jar:osx-aarch_64:4.1.100.Final",
"io.netty:netty-transport-native-unix-common:jar:osx-x86_64:4.1.100.Final",
"io.reactivex.rxjava3:rxjava:3.1.2",
"it.unimi.dsi:fastutil:7.2.1",
"javax.activation:javax.activation-api:1.2.0",
"javax.annotation:javax.annotation-api:1.3.2",
"javax.inject:javax.inject:1",
"org.apache.commons:commons-compress:1.26.1",
"org.apache.commons:commons-pool2:2.8.0",
"org.apache.tomcat:tomcat-annotations-api:8.0.5",
"org.apache.velocity:velocity:1.7",
"org.checkerframework:checker-qual:3.19.0",
"org.openjdk.jmh:jmh-core:1.37",
"org.openjdk.jmh:jmh-generator-annprocess:1.37",
"org.ow2.asm:asm:9.2",
"org.ow2.asm:asm-analysis:9.2",
"org.ow2.asm:asm-commons:9.2",
"org.ow2.asm:asm-tree:9.2",
"org.ow2.asm:asm-util:9.2",
"org.pcollections:pcollections:3.1.4",
"org.threeten:threeten-extra:1.5.0",
"org.tukaani:xz:1.9",
"org.yaml:snakeyaml:1.28",
"tools.profiler:async-profiler:3.0",
# The following jars are for testing.
# junit is not test only due to //src/java_tools/junitrunner/java/com/google/testing/junit/junit4:runner,
# and hamcrest is a dependency of junit.
"junit:junit:4.13.2",
"org.hamcrest:hamcrest-core:1.3",
],
excluded_artifacts = [
# org.apache.httpcomponents and org.eclipse.jgit:org.eclipse.jgit
# require java.security.jgss module to be embedded in the Bazel binary.
"org.apache.httpcomponents:httpclient",
"org.apache.httpcomponents:httpcore",
"org.eclipse.jgit:org.eclipse.jgit",
],
fail_if_repin_required = True,
lock_file = "//:maven_install.json",
repositories = [
"https://repo1.maven.org/maven2",
],
strict_visibility = True,
)
# Test only maven dependencies
[
maven.artifact(
testonly = True,
artifact = artifact,
group = group,
version = version,
)
for group, artifact, version in [coord.split(":") for coord in [
"com.google.guava:guava-testlib:33.2.1-jre",
"com.google.jimfs:jimfs:1.2",
"com.google.testing.compile:compile-testing:0.18",
"com.google.testparameterinjector:test-parameter-injector:1.16",
"com.google.truth:truth:1.4.0",
"com.google.truth.extensions:truth-java8-extension:1.4.0",
"com.google.truth.extensions:truth-liteproto-extension:1.4.0",
"com.google.truth.extensions:truth-proto-extension:1.4.0",
"org.mockito:mockito-core:5.4.0",
]]
]
use_repo(maven, "maven")
java_toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains")
use_repo(
java_toolchains,
"local_jdk",
# The following are required for visibility in //src:test_repos
"remote_java_tools",
"remote_java_tools_darwin_arm64",
"remote_java_tools_darwin_x86_64",
"remote_java_tools_linux",
"remote_java_tools_windows",
"remotejdk11_linux",
"remotejdk11_linux_aarch64",
"remotejdk11_linux_ppc64le",
"remotejdk11_linux_s390x",
"remotejdk11_macos",
"remotejdk11_macos_aarch64",
"remotejdk11_win",
"remotejdk11_win_arm64",
"remotejdk17_linux",
"remotejdk17_linux_s390x",
"remotejdk17_macos",
"remotejdk17_macos_aarch64",
"remotejdk17_win",
"remotejdk17_win_arm64",
"remotejdk21_linux",
"remotejdk21_linux_s390x",
"remotejdk21_macos",
"remotejdk21_macos_aarch64",
"remotejdk21_win",
)
# =========================================
# Python dependencies
# =========================================
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(python_version = "3.11")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
hub_name = "bazel_pip_dev_deps",
python_version = "3.11",
requirements_lock = "//:requirements.txt",
)
use_repo(pip, "bazel_pip_dev_deps")
# =========================================
# Other Bazel build dependencies
# =========================================
bazel_build_deps = use_extension("//:extensions.bzl", "bazel_build_deps")
use_repo(
bazel_build_deps,
"bazel_tools_repo_cache",
"bootstrap_repo_cache",
"debian_bin_deps",
"debian_cc_deps",
"debian_java_deps",
"debian_proto_deps",
"openjdk_linux_aarch64_vanilla",
"openjdk_linux_ppc64le_vanilla",
"openjdk_linux_s390x_vanilla",
"openjdk_linux_vanilla",
"openjdk_macos_aarch64_vanilla",
"openjdk_macos_x86_64_vanilla",
"openjdk_win_arm64_vanilla",
"openjdk_win_vanilla",
"workspace_repo_cache",
)
# Required only by `--extra_toolchains=@local_config_cc//:cc-toolchain-arm64_windows` from .bazelrc
cc_configure = use_extension("@rules_cc//cc:extensions.bzl", "cc_configure_extension")
use_repo(cc_configure, "local_config_cc")
gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm")
gvm.graalvm(
name = "graalvm",
distribution = "ce",
java_version = "21",
version = "21.0.2",
)
use_repo(gvm, "graalvm_toolchains")
http_file = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
# DO NOT UPDATE the jq versions, they are used to verify compatibility with old and new versions.
http_file(
name = "jq_linux_amd64",
executable = True,
integrity = "sha256-xrOn19PntwxvUbcGo7kL0BgzhGxU0yyjLwAn8AIm/20=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.5/jq-linux64"],
)
http_file(
name = "jq_linux_arm64",
executable = True,
integrity = "sha256-TdLYoGYd8LIvG7mh+YMPBrbzuPfZEhGh7118TwaotKU=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-arm64"],
)
http_file(
name = "jq_linux_s390x",
executable = True,
integrity = "sha256-hot8PKdCJKAt22EyYd38LkOxLart1etYNz29x/LF+SQ=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-s390x"],
)
http_file(
name = "jq_macos_amd64",
executable = True,
integrity = "sha256-OG6SyYKlb+SFFGjXqTHfyilWDO4wag5mxqG9QGXT2sU=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.5/jq-osx-amd64"],
)
http_file(
name = "jq_macos_arm64",
executable = True,
integrity = "sha256-C75hnmY+DeLFUL4v4NJA0HZ5nW+KZStw+gSuqKg2Loo=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-macos-arm64"],
)
http_file(
name = "jq_windows_amd64",
executable = True,
integrity = "sha256-6+zYQLpH779mgihoF4zHIaFRBgk396xAbj0xvQFb3pQ=",
urls = ["https://github.com/jqlang/jq/releases/download/jq-1.5/jq-win64.exe"],
)
# =========================================
# Other Bazel testing dependencies
# =========================================
bazel_dep(name = "bazel_ci_rules", version = "1.0.0")
bazel_test_deps = use_extension("//:extensions.bzl", "bazel_test_deps")
use_repo(
bazel_test_deps,
"kythe_release",
"local_bazel_source_list",
"local_config_winsdk",
)
bazel_rbe_deps = use_extension("//:rbe_extension.bzl", "bazel_rbe_deps")
use_repo(bazel_rbe_deps, "rbe_ubuntu2004")
remote_coverage_tools_extension = use_extension("//tools/test:extensions.bzl", "remote_coverage_tools_extension")
use_repo(remote_coverage_tools_extension, "remote_coverage_tools")
# =========================================
# Register platforms & toolchains
# =========================================
register_execution_platforms("//:default_host_platform")
register_toolchains("@bazel_tools//tools/python:autodetecting_toolchain")
register_toolchains("@local_config_winsdk//:all")
register_toolchains("//src/main/res:empty_rc_toolchain")
register_toolchains("@graalvm_toolchains//:gvm")