Skip to content

Commit f86fe8a

Browse files
committed
Some progress towards bzlmod support
1 parent 579edc1 commit f86fe8a

File tree

9 files changed

+75
-79
lines changed

9 files changed

+75
-79
lines changed

.bazelignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
dt_patches/test_dt_patches
2+
dt_patches/test_dt_patches_user_srcjar
3+
test_version
4+
test_cross_build
5+
examples

.bazelversion

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.3.0
1+
7.2.1

MODULE.bazel

+35-13
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,49 @@
11
module(name = "io_bazel_rules_scala")
22

3-
bazel_dep(name = "bazel_skylib", version = "1.4.1")
3+
bazel_dep(name = "bazel_skylib", version = "1.7.1")
44
bazel_dep(name = "rules_cc", version = "0.0.6")
5-
bazel_dep(name = "rules_java", version = "5.5.0")
6-
bazel_dep(name = "rules_proto", version = "5.3.0-21.7")
5+
bazel_dep(name = "rules_java", version = "7.8.0")
6+
bazel_dep(name = "rules_proto", version = "6.0.2")
7+
bazel_dep(name = "bazel_features", version = "1.14.0")
8+
bazel_dep(name = "protobuf", version = "27.3", repo_name = "com_google_protobuf")
9+
bazel_dep(name = "platforms", version = "0.0.10")
10+
bazel_dep(name = "rules_python", version = "0.34.0", dev_dependency = True)
11+
12+
single_version_override(
13+
module_name = "bazel_features",
14+
version = "1.14.0",
15+
)
16+
17+
version = use_extension("@bazel_features//private:extensions.bzl", "version_extension")
18+
use_repo(version, "bazel_features_globals", "bazel_features_version")
19+
20+
bazel_dep(name = "rules_go", version = "0.39.1")
21+
22+
bazel_dep(name = "buildtools", repo_name = "com_github_bazelbuild_buildtools")
23+
24+
git_override(
25+
module_name = "buildtools",
26+
remote = "https://github.com/bazelbuild/buildtools.git",
27+
commit = "37932ddd72301f8ca6075ee6b24e9e5d333c96a5"
28+
)
729

830
use_repo(
931
use_extension("//:extensions/scala_config_ext.bzl", "scala_config_dep"),
1032
"io_bazel_rules_scala_config"
1133
)
1234

1335
non_module_deps = use_extension("//:extensions/non_module_deps.bzl", "non_module_deps")
14-
use_repo(non_module_deps, "scala_compiler_source")
15-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_library")
16-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_compiler")
17-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_xml")
18-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_parser_combinators")
36+
use_repo(non_module_deps, "scala_compiler_source_2_12_18")
37+
use_repo(non_module_deps, "io_bazel_rules_scala_scala_library_2_12_18")
38+
use_repo(non_module_deps, "io_bazel_rules_scala_scala_compiler_2_12_18")
39+
use_repo(non_module_deps, "io_bazel_rules_scala_scala_xml_2_12_18")
40+
use_repo(non_module_deps, "io_bazel_rules_scala_scala_parser_combinators_2_12_18")
1941
use_repo(non_module_deps, "io_bazel_rules_scala_scala_interfaces")
20-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_reflect")
21-
use_repo(non_module_deps, "org_scalameta_semanticdb_scalac")
22-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_tasty_core")
23-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_asm")
24-
use_repo(non_module_deps, "io_bazel_rules_scala_scala_library_2")
42+
use_repo(non_module_deps, "io_bazel_rules_scala_scala_reflect_2_12_18")
43+
use_repo(non_module_deps, "org_scalameta_semanticdb_scalac_2_12_18")
44+
# use_repo(non_module_deps, "io_bazel_rules_scala_scala_tasty_core")
45+
# use_repo(non_module_deps, "io_bazel_rules_scala_scala_asm")
46+
# use_repo(non_module_deps, "io_bazel_rules_scala_scala_library_2")
2547
use_repo(non_module_deps, "io_bazel_rules_scala_org_openjdk_jmh_jmh_core")
2648
use_repo(non_module_deps, "io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm")
2749
use_repo(non_module_deps, "io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection")

WORKSPACE.bzlmod

+9-53
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,6 @@ workspace(name = "io_bazel_rules_scala")
22

33
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
44

5-
_build_tools_release = "5.1.0"
6-
7-
http_archive(
8-
name = "com_github_bazelbuild_buildtools",
9-
sha256 = "e3bb0dc8b0274ea1aca75f1f8c0c835adbe589708ea89bf698069d0790701ea3",
10-
strip_prefix = "buildtools-%s" % _build_tools_release,
11-
url = "https://github.com/bazelbuild/buildtools/archive/%s.tar.gz" % _build_tools_release,
12-
)
13-
14-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
15-
16-
# Declares @com_google_protobuf//:protoc pointing to released binary
17-
# This should stop building protoc during bazel build
18-
# See https://github.com/bazelbuild/rules_proto/pull/36
19-
rules_proto_dependencies()
20-
21-
rules_proto_toolchains()
22-
235
load("//scala:scala_cross_version.bzl", "default_maven_server_urls")
246
load("//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")
257

@@ -94,41 +76,9 @@ java_import_external(
9476

9577
## Linting
9678

97-
load("//private:format.bzl", "format_repositories")
98-
99-
format_repositories()
100-
101-
http_archive(
102-
name = "io_bazel_rules_go",
103-
sha256 = "dd926a88a564a9246713a9c00b35315f54cbd46b31a26d5d8fb264c07045f05d",
104-
urls = [
105-
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
106-
"https://github.com/bazelbuild/rules_go/releases/download/v0.38.1/rules_go-v0.38.1.zip",
107-
],
108-
)
109-
110-
load(
111-
"@io_bazel_rules_go//go:deps.bzl",
112-
"go_register_toolchains",
113-
"go_rules_dependencies",
114-
)
115-
116-
go_rules_dependencies()
117-
118-
go_register_toolchains(version = "1.19.5")
119-
120-
# Explicitly pull in a different (newer) version of rules_java for remote jdks
121-
rules_java_extra_version = "5.1.0"
122-
123-
rules_java_extra_sha = "d974a2d6e1a534856d1b60ad6a15e57f3970d8596fbb0bb17b9ee26ca209332a"
124-
125-
rules_java_extra_url = "https://github.com/bazelbuild/rules_java/releases/download/{}/rules_java-{}.tar.gz".format(rules_java_extra_version, rules_java_extra_version)
126-
127-
http_archive(
128-
name = "rules_java_extra",
129-
sha256 = rules_java_extra_sha,
130-
url = rules_java_extra_url,
131-
)
79+
# load("//private:format.bzl", "format_repositories")
80+
#
81+
# format_repositories()
13282

13383
load("@rules_java//java:repositories.bzl", "remote_jdk8_repos")
13484

@@ -176,3 +126,9 @@ repositories(
176126
],
177127
maven_servers = MAVEN_SERVER_URLS,
178128
)
129+
130+
load("//test/toolchains:jdk.bzl", "remote_jdk21_repositories", "remote_jdk21_toolchains")
131+
132+
remote_jdk21_repositories()
133+
134+
remote_jdk21_toolchains()

extensions/non_module_deps.bzl

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ load(
33
"@io_bazel_rules_scala//scala/private:macros/scala_repositories.bzl",
44
_dt_patched_compiler_setup = "dt_patched_compiler_setup",
55
)
6+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
67

78
def _non_module_deps_impl(ctx):
8-
_dt_patched_compiler_setup()
9+
_dt_patched_compiler_setup(SCALA_VERSION)
910
repository(
1011
id = "io_bazel_rules_scala_scala_library",
1112
validate_scala_version = True,

scala/private/rules/scala_repl.bzl

+4-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,10 @@ def make_scala_repl(*extras):
8181
common_outputs,
8282
*[extra["outputs"] for extra in extras if "outputs" in extra]
8383
),
84-
toolchains = ["@io_bazel_rules_scala//scala:toolchain_type"],
84+
toolchains = [
85+
"@io_bazel_rules_scala//scala:toolchain_type",
86+
"@bazel_tools//tools/jdk:toolchain_type",
87+
],
8588
cfg = scala_version_transition,
8689
incompatible_use_toolchain_transition = True,
8790
implementation = _scala_repl_impl,

scala/scala_maven_import_external.bzl

+2
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ def _jvm_import_external(repository_ctx):
6565
not repository_ctx.attr.neverlink):
6666
fail("Only use generated_linkable_rule_name if neverlink is set")
6767
name = repository_ctx.attr.repo_name or repository_ctx.attr.generated_rule_name or repository_ctx.name
68+
# HACK: remove the prefix up to the last ~
69+
name = name[name.rfind("~") + 1:]
6870
urls = repository_ctx.attr.jar_urls
6971
if repository_ctx.attr.jar_sha256:
7072
print("'jar_sha256' is deprecated. Please use 'artifact_sha256'")

test/proto_cross_repo_boundary/repo.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ def proto_cross_repo_boundary_repository():
22
native.new_local_repository(
33
name = "proto_cross_repo_boundary",
44
path = "test/proto_cross_repo_boundary/repo",
5-
build_file = "test/proto_cross_repo_boundary/repo/BUILD.repo",
5+
build_file = "//test/proto_cross_repo_boundary:repo/BUILD.repo",
66
)

third_party/repositories/repositories.bzl

+16-9
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,12 @@ def repositories(
109109
def _alias_repository_impl(rctx):
110110
""" Builds a repository containing just two aliases to the Scala Maven artifacts in the `target` repository. """
111111

112+
# HACK: remove the prefix up to the last ~
113+
name = str(rctx.name)
114+
name = name[name.rfind("~") + 1:]
115+
112116
format_kwargs = {
113-
"name": rctx.name,
117+
"name": name,
114118
"target": rctx.attr.target,
115119
}
116120
rctx.file("BUILD", """alias(
@@ -138,11 +142,10 @@ def repository(
138142
maven_servers = default_maven_server_urls(),
139143
fetch_sources = True,
140144
validate_scala_version = False):
141-
if validate_scala_version:
142-
repository_scala_version = scala_version_by_major_scala_version[SCALA_MAJOR_VERSION]
143-
if not SCALA_VERSION == repository_scala_version:
144-
fail("Scala config (%s) version does not match repository version (%s)" % (SCALA_VERSION, repository_scala_version))
145-
artifacts = artifacts_by_major_scala_version[SCALA_MAJOR_VERSION]
145+
suffix = version_suffix(SCALA_VERSION)
146+
major_scala_version = extract_major_version(SCALA_VERSION)
147+
default_artifacts = artifacts_by_major_scala_version[major_scala_version]
148+
artifacts = dict(default_artifacts.items())
146149

147150
# workaround to satisfy bzlmod builds
148151
# in a MODULE.bazel file we don't know which scala version is set,
@@ -151,18 +154,22 @@ def repository(
151154
dummy_repo(repo_name = id)
152155
else:
153156
_scala_maven_import_external(
154-
name = id,
155-
repo_name = id,
157+
name = id + suffix,
156158
artifact = artifacts[id]["artifact"],
157159
artifact_sha256 = artifacts[id]["sha256"],
158160
licenses = ["notice"],
159161
server_urls = maven_servers,
160-
deps = artifacts[id].get("deps", []),
162+
deps = [dep + suffix for dep in artifacts[id].get("deps", [])],
161163
runtime_deps = artifacts[id].get("runtime_deps", []),
162164
testonly_ = artifacts[id].get("testonly", False),
163165
fetch_sources = fetch_sources,
164166
)
165167

168+
# For backward compatibility: non-suffixed repo pointing to the suffixed one,
169+
# See: https://github.com/bazelbuild/rules_scala/pull/1573
170+
# Hopefully we can deprecate and remove it one day.
171+
_alias_repository(name = id, target = id + suffix)
172+
166173
def _dummy_repo_impl(repository_ctx):
167174
repository_ctx.file("BUILD")
168175

0 commit comments

Comments
 (0)