forked from bazelbuild/rules_scala
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
All but finishes bazelbuild#1482, barring the release and publication to the Bazel Central Registry. New `MODULE.bazel` files mirroring existing `WORKSPACE` configurations comprise the bulk of the commit. The empty `WORKSPACE.bzlmod` files ensure that Bzlmod won't evaluate the existing `WORKSPACE` files. These new files comprise the most significant part of the change: - `scala/extensions/config.bzl` - `scala/extensions/deps.bzl` - `scala/private/extensions/dev_deps.bzl` - `scala/private/macros/bzlmod.bzl` `config.bzl`, `deps.bzl`, and `dev_deps.bzl` are thoroughly tested by existing tests. The following files thoroughly test the helpers from `scala/private/macros/bzlmod.bzl` specifically: - scala/private/macros/test/... - test/shell/test_bzlmod_macros.sh The pattern employed throughout the new module extensions is explained in the `scala/private/macros/bzlmod.bzl` docstring. Adding `test/shell/test_bzlmod_macros.sh` also precipitated adding a new `assert_matches` helper to `test/shell/test_helper.sh`. `test/shell/test_helper.sh` also introduces a mechanism for automatically finding and skipping tests, documented in the comment at the bottom of the file. "Publish to BCR" configuration in the `.bcr` directory comes from: - https://github.com/bazel-contrib/publish-to-bcr/tree/main/templates The bazel-contrib/publish-to-bcr README contains further guidance on configuring the app. Once that's done, we can use the app to publish a new version to https://registry.bazel.build/ and then close bazelbuild#1482. This change enables Bazel 7 and 8 users to migrate their `rules_scala` dependency from `WORKSPACE` to `MODULE.bazel` whenever they're ready. Stardoc inspired doc updates
- Loading branch information
Showing
78 changed files
with
3,531 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Remove once the following is fixed: | ||
# - bazelbuild/bazel: Loading top-level targets in local_path_override modules | ||
# in child directory breaks the build #22208 | ||
# https://github.com/bazelbuild/bazel/issues/22208 | ||
dt_patches/compiler_sources | ||
dt_patches/test_dt_patches | ||
dt_patches/test_dt_patches_user_srcjar | ||
examples/crossbuild | ||
examples/overridden_artifacts | ||
examples/scala3 | ||
examples/semanticdb | ||
examples/testing/multi_frameworks_toolchain | ||
examples/testing/scalatest_repositories | ||
examples/testing/specs2_junit_repositories | ||
test/proto_cross_repo_boundary/repo | ||
test_cross_build | ||
third_party/test/example_external_workspace | ||
third_party/test/new_local_repo | ||
third_party/test/proto |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{ | ||
"homepage": "https://github.com/bazelbuild/rules_scala", | ||
"maintainers": [ | ||
{ | ||
"name": "Simonas Pinevičius", | ||
"email": "simonas.pinevicius@gmail.com", | ||
"github": "simuons" | ||
}, | ||
{ | ||
"name": "Vaidas Pilkauskas", | ||
"email": "vaidas.pilkauskas@gmail.com", | ||
"github": "liucijus" | ||
} | ||
], | ||
"repository": [ | ||
"github:bazelbuild/rules_scala" | ||
], | ||
"versions": [], | ||
"yanked_versions": {} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# We recommend included a bcr test workspace that exercises your ruleset with bzlmod. | ||
# For an example, see https://github.com/aspect-build/bazel-lib/tree/main/e2e/bzlmod. | ||
bcr_test_module: | ||
module_path: "examples/crossbuild" | ||
matrix: | ||
platform: ["debian10", "macos", "ubuntu2004", "windows"] | ||
bazel: [6.x, 7.x] | ||
tasks: | ||
run_tests: | ||
name: "Run test module" | ||
platform: ${{ platform }} | ||
bazel: ${{ bazel }} | ||
test_targets: | ||
- "//..." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"integrity": "", | ||
"strip_prefix": "{REPO}-{VERSION}", | ||
"url": "https://github.com/{OWNER}/{REPO}/releases/download/{TAG}/{REPO}-{TAG}.tar.gz" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,279 @@ | ||
"""Bazel module definition for rules_scala""" | ||
|
||
module( | ||
name = "rules_scala", | ||
version = "7.0.0", | ||
compatibility_level = 7, | ||
bazel_compatibility = [">=7.5.0"], | ||
) | ||
|
||
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.16", | ||
] | ||
|
||
SCALA_3_VERSIONS = [ | ||
"3.1.3", | ||
"3.3.5", | ||
"3.5.2", | ||
"3.6.3", | ||
] | ||
|
||
SCALA_VERSIONS = SCALA_2_VERSIONS + SCALA_3_VERSIONS | ||
|
||
bazel_dep(name = "bazel_skylib", version = "1.7.1") | ||
bazel_dep(name = "platforms", version = "0.0.11") | ||
bazel_dep(name = "rules_cc", version = "0.1.1") | ||
bazel_dep(name = "rules_java", version = "8.9.0") | ||
bazel_dep(name = "rules_proto", version = "7.1.0") | ||
|
||
bazel_dep( | ||
name = "protobuf", | ||
version = "29.3", | ||
repo_name = "com_google_protobuf", | ||
) | ||
|
||
# Temporarily required for `protoc` toolchainization until resolution of | ||
# protocolbuffers/protobuf#19679. | ||
single_version_override( | ||
module_name = "protobuf", | ||
version = "29.3", | ||
patches = ["//protoc:0001-protobuf-19679-rm-protoc-dep.patch"], | ||
patch_strip = 1, | ||
) | ||
|
||
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") | ||
|
||
# This is optional, but still safe to include even when not using | ||
# `--incompatible_enable_proto_toolchain_resolution`. | ||
register_toolchains("//protoc:all") | ||
|
||
# Register some of our testing toolchains first when building our repo. | ||
register_toolchains( | ||
"//scala:unused_dependency_checker_error_toolchain", | ||
"//test/proto:scalapb_toolchain", | ||
"//test/toolchains:java21_toolchain_definition", | ||
dev_dependency = True, | ||
) | ||
|
||
use_repo( | ||
scala_deps, | ||
"rules_scala_toolchains", | ||
"scala_compiler_sources", | ||
) | ||
|
||
register_toolchains("@rules_scala_toolchains//...:all") | ||
|
||
# Dev dependencies | ||
|
||
dev_deps = use_extension( | ||
"//scala/extensions:deps.bzl", | ||
"scala_deps", | ||
dev_dependency = True, | ||
) | ||
dev_deps.toolchains( | ||
jmh = True, | ||
scala_proto = True, | ||
scalafmt = True, | ||
scalatest = True, | ||
junit = True, | ||
specs2 = True, | ||
twitter_scrooge = True, | ||
) | ||
|
||
use_repo( | ||
dev_deps, | ||
"scala_proto_rules_scalapb_compilerplugin", | ||
"scala_proto_rules_scalapb_protoc_bridge", | ||
"scalafmt_default", | ||
) | ||
|
||
# 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. | ||
["scala_proto_rules_scalapb_protoc_gen"] | ||
if not scala_version.startswith("2.11.") else [] | ||
) | ||
] | ||
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.53.0", | ||
dev_dependency = True, | ||
repo_name = "io_bazel_rules_go", # for com_github_bazelbuild_buildtools | ||
) | ||
bazel_dep(name = "gazelle", version = "0.42.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.24.0") | ||
|
||
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.29.0 | ||
go_deps.module( | ||
path = "golang.org/x/tools", | ||
sum = "h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY=", | ||
version = "v0.30.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.2.0", dev_dependency = True) |
Oops, something went wrong.