Skip to content

Commit c7eb1c7

Browse files
committed
WIP: Bzlmod part the one hundred twenty-fourth
Major revamp to extract `*_artifact_ids()` macros, and using them to pool artifact IDs in `scala_toolchains`. This way, `scala_toolchains` calls `repositories` with all the IDs at once, avoiding the need to orchestrate which other macros instantiate which repos. Specifically, the `scala_proto_instantiated` parameter for `twitter_scrooge` and `scalafmt_repositories` is now gone. It can be refactored a bit to be even more compact, but the proof of concept already works under Bzlmod and `WORKSPACE`. Also: - Removed `scala/artifacts.bzl` and `versioned_artifact_repos`, replaced by `scala/scala_cross_version.bzl` and `repositories` - Removed some `bzlmod_enabled` parameters, and repurposed the `twitter_scrooge` one to `register_toolchains` - Added a `twitter_scrooge` tag class to the `deps.bzl` module extension, though I'm not sure if it'll ever get used - Removed `_declare_and_bind` from `twitter_scrooge.bzl`
1 parent dce48a7 commit c7eb1c7

File tree

26 files changed

+6681
-6053
lines changed

26 files changed

+6681
-6053
lines changed

MODULE.bazel.lock

+3,824-3,217
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dt_patches/test_dt_patches/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dt_patches/test_dt_patches_user_srcjar/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/crossbuild/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/scala3/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/semanticdb/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/testing/multi_frameworks_toolchain/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/testing/scalatest_repositories/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/testing/specs2_junit_repositories/MODULE.bazel.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

jmh/jmh.bzl

+13-13
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,27 @@ load(
77
load("//third_party/repositories:repositories.bzl", "repositories")
88
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
99

10+
def jmh_artifact_ids():
11+
return [
12+
"io_bazel_rules_scala_org_openjdk_jmh_jmh_core",
13+
"io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm",
14+
"io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection",
15+
"io_bazel_rules_scala_org_ow2_asm_asm",
16+
"io_bazel_rules_scala_net_sf_jopt_simple_jopt_simple",
17+
"io_bazel_rules_scala_org_apache_commons_commons_math3",
18+
]
19+
1020
def jmh_repositories(
1121
maven_servers = default_maven_server_urls(),
12-
overriden_artifacts = {},
13-
bzlmod_enabled = False):
22+
overriden_artifacts = {}):
1423
repositories(
1524
scala_version = SCALA_VERSION,
16-
for_artifact_ids = [
17-
"io_bazel_rules_scala_org_openjdk_jmh_jmh_core",
18-
"io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm",
19-
"io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection",
20-
"io_bazel_rules_scala_org_ow2_asm_asm",
21-
"io_bazel_rules_scala_net_sf_jopt_simple_jopt_simple",
22-
"io_bazel_rules_scala_org_apache_commons_commons_math3",
23-
],
25+
for_artifact_ids = jmh_artifact_ids(),
2426
fetch_sources = False,
2527
maven_servers = maven_servers,
2628
overriden_artifacts = overriden_artifacts,
2729
)
28-
29-
if not bzlmod_enabled:
30-
native.register_toolchains("@io_bazel_rules_scala_toolchains//jmh:all")
30+
native.register_toolchains("@io_bazel_rules_scala_toolchains//jmh:all")
3131

3232
def _scala_generate_benchmark(ctx):
3333
# we use required providers to ensure JavaInfo exists

jmh/toolchain/toolchain.bzl

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
load("//scala/private/toolchain_deps:toolchain_deps.bzl", "expose_toolchain_deps")
2-
load("//scala:artifacts.bzl", "versioned_artifact_repos")
32
load("//scala:providers.bzl", "declare_deps_provider", _DepsInfo = "DepsInfo")
3+
load("//scala:scala_cross_version.bzl", "repositories")
4+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
45

56
DEP_PROVIDERS = [
67
"jmh_classpath",
@@ -59,7 +60,7 @@ def setup_jmh_toolchain(name):
5960
name = "jmh_core_provider",
6061
deps_id = "jmh_core",
6162
visibility = ["//visibility:public"],
62-
deps = versioned_artifact_repos([
63+
deps = repositories(SCALA_VERSION, [
6364
"@io_bazel_rules_scala_org_openjdk_jmh_jmh_core",
6465
]),
6566
)
@@ -68,7 +69,7 @@ def setup_jmh_toolchain(name):
6869
name = "jmh_classpath_provider",
6970
deps_id = "jmh_classpath",
7071
visibility = ["//visibility:public"],
71-
deps = versioned_artifact_repos([
72+
deps = repositories(SCALA_VERSION, [
7273
"@io_bazel_rules_scala_net_sf_jopt_simple_jopt_simple",
7374
"@io_bazel_rules_scala_org_apache_commons_commons_math3",
7475
]),
@@ -80,7 +81,7 @@ def setup_jmh_toolchain(name):
8081
visibility = ["//visibility:public"],
8182
deps = [
8283
"@io_bazel_rules_scala//src/java/io/bazel/rulesscala/jar",
83-
] + versioned_artifact_repos([
84+
] + repositories(SCALA_VERSION, [
8485
"@io_bazel_rules_scala_org_openjdk_jmh_jmh_core",
8586
"@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm",
8687
"@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_reflection",
@@ -91,7 +92,7 @@ def setup_jmh_toolchain(name):
9192
name = "benchmark_generator_runtime_provider",
9293
deps_id = "benchmark_generator_runtime",
9394
visibility = ["//visibility:public"],
94-
deps = versioned_artifact_repos([
95+
deps = repositories(SCALA_VERSION, [
9596
"@io_bazel_rules_scala_org_openjdk_jmh_jmh_generator_asm",
9697
]),
9798
)

junit/junit.bzl

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,20 @@ load(
55
load("//third_party/repositories:repositories.bzl", "repositories")
66
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
77

8+
def junit_artifact_ids():
9+
return [
10+
"io_bazel_rules_scala_junit_junit",
11+
"io_bazel_rules_scala_org_hamcrest_hamcrest_core",
12+
]
13+
814
def junit_repositories(
915
maven_servers = _default_maven_server_urls(),
1016
scala_version = SCALA_VERSION,
1117
overriden_artifacts = {},
1218
fetch_sources = True):
1319
repositories(
1420
scala_version = scala_version,
15-
for_artifact_ids = [
16-
"io_bazel_rules_scala_junit_junit",
17-
"io_bazel_rules_scala_org_hamcrest_hamcrest_core",
18-
],
21+
for_artifact_ids = junit_artifact_ids(),
1922
fetch_sources = fetch_sources,
2023
maven_servers = maven_servers,
2124
overriden_artifacts = overriden_artifacts,

scala/artifacts.bzl

-7
This file was deleted.

scala/extensions/deps.bzl

+32-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,16 @@ _toolchains = tag_class(
7575
},
7676
)
7777

78+
_twitter_scrooge = tag_class(
79+
attrs = {
80+
"libthrift": attr.string(),
81+
"scrooge_core": attr.string(),
82+
"scrooge_generator": attr.string(),
83+
"util_core": attr.string(),
84+
"util_logging": attr.string(),
85+
},
86+
)
87+
7888
def _get_settings(root_module):
7989
"""Compiles the `settings` and `scalafmt` tag values from the root module.
8090
@@ -135,12 +145,32 @@ def _get_toolchains(module_ctx):
135145
result["junit"] = True
136146
return result
137147

148+
def _get_twitter_scrooge(module_ctx):
149+
result = {}
150+
151+
for mod in module_ctx.modules:
152+
if not mod.is_root:
153+
continue
154+
155+
for tag in mod.tags.twitter_scrooge:
156+
_add_if_not_empty(result, "libthrift", tag.libthrift)
157+
_add_if_not_empty(result, "scrooge_core", tag.scrooge_core)
158+
_add_if_not_empty(result, "scrooge_generator", tag.scrooge_generator)
159+
_add_if_not_empty(result, "util_core", tag.util_core)
160+
_add_if_not_empty(result, "util_logging", tag.util_logging)
161+
162+
return result
163+
138164
def _scala_deps_impl(module_ctx):
139165
root_module = get_root_module(module_ctx)
140166
scala_toolchains(
141167
load_rules_scala_dependencies = False, # MODULE.bazel loads these now.
142168
scala_compiler_srcjars = _get_scala_compiler_srcjars(root_module),
143-
**(_get_settings(root_module) | _get_toolchains(module_ctx))
169+
**(
170+
_get_settings(root_module) |
171+
_get_toolchains(module_ctx) |
172+
_get_twitter_scrooge(module_ctx)
173+
)
144174
)
145175

146176
scala_deps = module_extension(
@@ -150,5 +180,6 @@ scala_deps = module_extension(
150180
"scalafmt": _scalafmt,
151181
"compiler_srcjar": _compiler_srcjar,
152182
"toolchains": _toolchains,
183+
"twitter_scrooge": _twitter_scrooge,
153184
},
154185
)

scala/private/extensions/dev_deps.bzl

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ _BUILD_TOOLS_RELEASE = "5.1.0"
1717

1818
_settings_defaults = {
1919
"maven_servers": default_maven_server_urls(),
20-
"fetch_sources": True,
20+
"fetch_sources": False,
2121
}
2222

2323
_settings = tag_class(

0 commit comments

Comments
 (0)