blob: 652a609cdb5a42d5773dbbac92225d671d3d0e82 [file] [log] [blame]
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
# Minimise the risk of accidentally depending on something that's not already loaded
load("//private/rules:maven_install.bzl", "maven_install")
_DEFAULT_REPOSITORIES = [
"https://repo1.maven.org/maven2",
"https://repo.gradle.org/gradle/libs-releases/",
]
_MAVEN_VERSION = "3.9.10"
_MAVEN_RESOLVER_VERSION = "1.9.23"
_GRADLE_VERSION = "8.13"
def rules_jvm_external_deps(
repositories = _DEFAULT_REPOSITORIES,
deps_lock_file = "@rules_jvm_external//:rules_jvm_external_deps_install.json"):
maybe(
http_archive,
name = "bazel_skylib",
sha256 = "bc283cdfcd526a52c3201279cda4bc298652efa898b10b4db0837dc51652756f",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
"https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz",
],
)
# The `rules_java` major version is tied to the major version of Bazel that it supports,
# so this is different from the version in the MODULE file.
major_version = native.bazel_version.partition(".")[0]
if major_version == "5":
maybe(
http_archive,
name = "rules_java",
urls = [
"https://github.com/bazelbuild/rules_java/releases/download/5.5.1/rules_java-5.5.1.tar.gz",
],
sha256 = "73b88f34dc251bce7bc6c472eb386a6c2b312ed5b473c81fe46855c248f792e0",
)
else:
maybe(
http_archive,
name = "rules_java",
urls = [
"https://github.com/bazelbuild/rules_java/releases/download/7.12.2/rules_java-7.12.2.tar.gz",
],
sha256 = "a9690bc00c538246880d5c83c233e4deb83fe885f54c21bb445eb8116a180b83",
)
if major_version == "6":
# Here goes the chain of rules compatibility resolution between RJE, java, android, cc and protobuf:
#
# rules_jvm_external wants to support LTS-2. For Bazel 8, this means supporting Bazel 6.
#
# rules_android is decoupled from Bazel 8, including its providers. ProguardSpecInfo is also decoupled, but to rules_java 7.12.2.
#
# So rules_java 7.12.2 is necessary for a decoupled rules_android to work with Bazel 6.
#
# But with workspace + rules_java 7.12.2, rules_java brings in a dep on
# rules_cc's //cc package via //java/bazel/rules:rules (for CcInfo).
# https://github.com/bazelbuild/rules_java/blob/2a9bd746974f6c94b159821d75130ad43e6b2970/java/bazel/rules/BUILD.bazel#L34-L35
#
# and rules_cc, in turn, brings in a dep on protobuf.
#
# And that's why we need the following deps:
maybe(
http_archive,
name = "rules_cc",
urls = ["https://github.com/bazelbuild/rules_cc/archive/faeafdb82814b4f7295c555781e800f080607bdd.tar.gz"],
sha256 = "ca772d4fa149180dd1d81fe19a61c911dcebf9768d56209fc5bf382125ade0b6",
strip_prefix = "rules_cc-faeafdb82814b4f7295c555781e800f080607bdd",
)
maybe(
http_archive,
name = "protobuf",
sha256 = "da288bf1daa6c04d03a9051781caa52aceb9163586bff9aa6cfb12f69b9395aa",
strip_prefix = "protobuf-27.0",
url = "https://github.com/protocolbuffers/protobuf/releases/download/v27.0/protobuf-27.0.tar.gz",
)
maybe(
http_archive,
name = "rules_shell",
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.3.0/rules_shell-v0.3.0.tar.gz",
sha256 = "d8cd4a3a91fc1dc68d4c7d6b655f09def109f7186437e3f50a9b60ab436a0c53",
strip_prefix = "rules_shell-0.3.0",
# 0.3.0 uses load visibility and other Bazel 7+ features. Remove this
# patch when we stop supporting Bazel 6.
patches = ["@rules_jvm_external//:rules_shell_patch.diff"],
patch_args = ["-p1"],
)
maybe(
http_archive,
name = "package_metadata",
urls = [
"https://mirror.bazel.build/github.com/bazel-contrib/supply-chain/releases/download/v0.0.3/supply-chain-v0.0.3.tar.gz",
"https://github.com/bazel-contrib/supply-chain/releases/download/v0.0.3/supply-chain-v0.0.3.tar.gz",
],
sha256 = "0e89367f1cb6d93a5a1afea4b55b11ea6b28f63f653b47154153677ca7d4afea",
strip_prefix = "supply-chain-0.0.3/metadata",
)
maybe(
http_archive,
name = "rules_license",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz",
"https://github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz",
],
sha256 = "26d4021f6898e23b82ef953078389dd49ac2b5618ac564ade4ef87cced147b38",
)
maybe(
http_archive,
name = "bazel_features",
sha256 = "3646ffd447753490b77d2380fa63f4d55dd9722e565d84dfda01536b48e183da",
strip_prefix = "bazel_features-1.19.0",
url = "https://github.com/bazel-contrib/bazel_features/releases/download/v1.19.0/bazel_features-v1.19.0.tar.gz",
)
maven_install(
name = "rules_jvm_external_deps",
artifacts = [
"com.google.auth:google-auth-library-credentials:1.23.0",
"com.google.auth:google-auth-library-oauth2-http:1.23.0",
"com.google.cloud:google-cloud-core:2.40.0",
"com.google.cloud:google-cloud-storage:2.40.1",
"com.google.code.gson:gson:2.11.0",
"com.google.googlejavaformat:google-java-format:1.22.0",
"com.google.guava:guava:33.2.1-jre",
"org.apache.maven:maven-artifact:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-core:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-model:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-model-builder:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-repository-metadata:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-settings:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-settings-builder:%s" % _MAVEN_VERSION,
"org.apache.maven:maven-resolver-provider:%s" % _MAVEN_VERSION,
"org.apache.maven.resolver:maven-resolver-api:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-impl:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-connector-basic:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-spi:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-transport-file:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-transport-http:%s" % _MAVEN_RESOLVER_VERSION,
"org.apache.maven.resolver:maven-resolver-util:%s" % _MAVEN_RESOLVER_VERSION,
"org.codehaus.plexus:plexus-cipher:2.1.0",
"org.codehaus.plexus:plexus-sec-dispatcher:2.0",
"org.codehaus.plexus:plexus-utils:3.5.1",
"org.fusesource.jansi:jansi:2.4.1",
"org.slf4j:jul-to-slf4j:2.0.12",
"org.slf4j:log4j-over-slf4j:2.0.12",
"org.slf4j:slf4j-simple:2.0.12",
"software.amazon.awssdk:s3:2.26.12",
"software.amazon.awssdk:sdk-core:2.26.12",
"org.bouncycastle:bcprov-jdk15on:1.68",
"org.bouncycastle:bcpg-jdk15on:1.68",
"org.gradle:gradle-tooling-api:%s" % _GRADLE_VERSION,
"com.github.jknack:handlebars:4.3.1",
],
maven_install_json = deps_lock_file,
strict_visibility = True,
fetch_sources = True,
repositories = repositories,
)
http_archive(
name = "gradle",
add_prefix = "gradle-bin",
build_file = "//:gradle.BUILD.bazel",
integrity = "sha256-IPGxF2I3JUpvwgTYQ0GW+hGkz7OHVnUZxhVW6HEK7Xg=",
strip_prefix = "gradle-{}".format(_GRADLE_VERSION),
url = "https://services.gradle.org/distributions/gradle-{}-bin.zip".format(_GRADLE_VERSION),
)