"""Bazel module definition for rules_scala""" module( name = "rules_scala", version = "7.1.6", bazel_compatibility = [">=7.1.0"], compatibility_level = 7, ) SCALA_VERSION = "2.12.20" # These versions match those required by some tests, including # test_thirdparty_version.sh. SCALA_2_VERSIONS = [ "2.11.12", "2.12.20", "2.13.17", ] SCALA_3_VERSIONS = [ "3.1.3", "3.3.7", "3.5.2", "3.6.4", "3.7.4", ] SCALA_VERSIONS = SCALA_2_VERSIONS + SCALA_3_VERSIONS bazel_dep(name = "bazel_skylib", version = "1.8.0") single_version_override( module_name = "bazel_skylib", version = "1.8.2", ) bazel_dep(name = "platforms", version = "0.0.9") single_version_override( module_name = "platforms", version = "1.0.0", ) bazel_dep(name = "rules_java", version = "7.6.0") single_version_override( module_name = "rules_java", version = "9.3.0", ) bazel_dep(name = "rules_proto", version = "6.0.0") single_version_override( module_name = "rules_proto", version = "7.1.0", ) bazel_dep( name = "protobuf", version = "28.2", repo_name = "com_google_protobuf", ) # Temporarily required for `protoc` toolchainization until # protocolbuffers/protobuf#19679 appears in a published release. single_version_override( module_name = "protobuf", patch_strip = 1, patches = ["//protoc:0001-protobuf-19679-rm-protoc-dep.patch"], version = "33.1", ) # See //src/java/io/bazel/rulesscala/worker:worker_protocol_java_proto. bazel_dep(name = "bazel_worker_api", version = "0.0.6") scala_protoc = use_extension( "//scala/extensions:protoc.bzl", "scala_protoc", dev_dependency = True, ) use_repo(scala_protoc, "rules_scala_protoc_toolchains") scala_config = use_extension( "//scala/extensions:config.bzl", "scala_config", ) use_repo(scala_config, "rules_scala_config") dev_config = use_extension( "//scala/extensions:config.bzl", "scala_config", dev_dependency = True, ) dev_config.settings( enable_compiler_dependency_tracking = True, scala_version = SCALA_VERSION, scala_versions = SCALA_VERSIONS, ) scala_deps = use_extension("//scala/extensions:deps.bzl", "scala_deps") use_repo( scala_deps, "rules_scala_toolchains", "scala_compiler_sources", ) # Register some of our testing toolchains first when building our repo. register_toolchains( # This is optional, but still safe to include even when not using # `--incompatible_enable_proto_toolchain_resolution`. Requires invoking the # `scala_protoc_toolchains` repo rule. Register this toolchain before any # others. "@rules_scala_protoc_toolchains//...:all", "//scala:unused_dependency_checker_error_toolchain", "//test/proto:scalapb_toolchain", "//test/toolchains:java21_toolchain_definition", dev_dependency = True, ) register_toolchains("@rules_scala_toolchains//...:all") # Dev dependencies dev_deps = use_extension( "//scala/extensions:deps.bzl", "scala_deps", dev_dependency = True, ) dev_deps.scala() dev_deps.jmh() dev_deps.junit() dev_deps.scala_proto() dev_deps.scalafmt() dev_deps.scalatest() dev_deps.specs2() dev_deps.twitter_scrooge() use_repo( dev_deps, "scala_proto_rules_scalapb_compilerplugin", "scala_proto_rules_scalapb_protoc_bridge", ) # Default versions of version specific repos needed by some of our tests. Tests # that set `--repo_env=SCALA_VERSION=...` break without using the default here, # because version specific repos for other versions won't be available. use_repo( dev_deps, "io_bazel_rules_scala_guava", "io_bazel_rules_scala_junit_junit", "io_bazel_rules_scala_scala_compiler", "io_bazel_rules_scala_scala_library", ) [ [ use_repo(dev_deps, dep + "_" + scala_version.replace(".", "_")) for dep in [ "io_bazel_rules_scala_junit_junit", "io_bazel_rules_scala_scala_compiler", "io_bazel_rules_scala_scala_library", ] + ( # We can remove this condition once we drop support for Scala 2.11. [] if scala_version.startswith("2.11.") else [ "scala_proto_rules_scalapb_protoc_gen", ] ) ] for scala_version in SCALA_VERSIONS ] [ [ use_repo(dev_deps, dep + "_" + scala_version.replace(".", "_")) for dep in [ "io_bazel_rules_scala_scala_reflect", ] ] for scala_version in SCALA_2_VERSIONS ] [ [ use_repo(dev_deps, dep + "_" + scala_version.replace(".", "_")) for dep in [ "io_bazel_rules_scala_scala_compiler_2", "io_bazel_rules_scala_scala_library_2", "io_bazel_rules_scala_scala_reflect_2", ] ] for scala_version in SCALA_3_VERSIONS ] internal_dev_deps = use_extension( "//scala/private/extensions:dev_deps.bzl", "dev_deps", dev_dependency = True, ) # See //scala/private:extensions/dev_deps.bzl for notes on some of these repos. use_repo( internal_dev_deps, "com_github_bazelbuild_buildtools", "com_github_jnr_jffi_native", "com_google_guava_guava_21_0", "com_google_guava_guava_21_0_with_file", "com_twitter__scalding_date", "org_apache_commons_commons_lang_3_5", "org_apache_commons_commons_lang_3_5_without_file", "org_springframework_spring_core", "org_springframework_spring_tx", "org_typelevel__cats_core", "org_typelevel_kind_projector", ) java_toolchains = use_extension( "@rules_java//java:extensions.bzl", "toolchains", dev_dependency = True, ) use_repo( java_toolchains, # //test/toolchains:java21_toolchain "remotejdk21_linux", "remotejdk21_macos", "remotejdk21_win", # //test/jmh:test_jmh_jdk8 "remote_jdk8_linux", "remote_jdk8_macos", "remote_jdk8_windows", ) [ ( bazel_dep(name = name, dev_dependency = True), local_path_override( module_name = name, path = path, ), ) for name, path in [ ( "proto_cross_repo_boundary", "test/proto_cross_repo_boundary/repo", ), ( "test_new_local_repo", "third_party/test/new_local_repo", ), ( "example_external_workspace", "third_party/test/example_external_workspace", ), ] ] bazel_dep( name = "bazel_ci_rules", version = "1.0.0", dev_dependency = True, repo_name = "bazelci_rules", ) bazel_dep( name = "rules_go", version = "0.59.0", dev_dependency = True, repo_name = "io_bazel_rules_go", # for com_github_bazelbuild_buildtools ) bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True) go_sdk = use_extension( "@io_bazel_rules_go//go:extensions.bzl", "go_sdk", dev_dependency = True, ) go_sdk.download(version = "1.25.5") go_deps = use_extension( "@gazelle//:extensions.bzl", "go_deps", dev_dependency = True, ) # The go_deps.module calls are inspired by the following to get the # com_github_bazelbuild_buildtools repo to work: # # - https://github.com/bazelbuild/bazel-central-registry/blob/main/modules/gazelle/0.39.1/MODULE.bazel#L31-L57 # # To get the latest version and hashes for each per: # # - https://go.dev/ref/mod#go-list-m # - https://go.dev/ref/mod#checksum-database # # go list -m golang.org/x/tools@latest # curl https://sum.golang.org/lookup/golang.org/x/tools@v0.38.0 go_deps.module( path = "golang.org/x/tools", sum = "h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=", version = "v0.40.0", ) go_deps.module( path = "github.com/golang/protobuf", sum = "h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=", version = "v1.5.4", ) use_repo( go_deps, "com_github_golang_protobuf", "org_golang_x_tools", ) bazel_dep(name = "rules_python", version = "1.7.0", dev_dependency = True) bazel_dep(name = "rules_shell", version = "0.6.1", dev_dependency = True)