Skip to content

Commit dca724a

Browse files
committed
Toolchainize twitter_scrooge
This is the last of the toolchain to receive the "toolchainization" treatment prior to Bzlmodification, and moves `twitter_scrooge()` to `twitter_scrooge/toolchain/toolchain.bzl` for `rules_java` 8 compatibility. Part of bazelbuild#1482 and bazelbuild#1652.
1 parent 759b61a commit dca724a

File tree

10 files changed

+240
-240
lines changed

10 files changed

+240
-240
lines changed

WORKSPACE

+1-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ scala_toolchains(
3838
scala_proto = True,
3939
scalafmt = True,
4040
testing = True,
41+
twitter_scrooge = True,
4142
)
4243

4344
register_toolchains(
@@ -62,10 +63,6 @@ load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
6263

6364
protobuf_deps()
6465

65-
load("//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")
66-
67-
twitter_scrooge()
68-
6966
# needed for the cross repo proto test
7067
local_repository(
7168
name = "proto_cross_repo_boundary",

scala/private/macros/toolchains_repo.bzl

+12
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ def _scala_toolchains_repo_impl(repository_ctx):
4949
toolchains["scala_proto"] = _SCALA_PROTO_TOOLCHAIN_BUILD
5050
if repo_attr.jmh:
5151
toolchains["jmh"] = _JMH_TOOLCHAIN_BUILD
52+
if repo_attr.twitter_scrooge:
53+
toolchains["twitter_scrooge"] = _TWITTER_SCROOGE_TOOLCHAIN_BUILD
5254

5355
testing_build_args = _generate_testing_toolchain_build_file_args(repo_attr)
5456
if testing_build_args != None:
@@ -81,6 +83,7 @@ _scala_toolchains_repo = repository_rule(
8183
"scala_proto": attr.bool(),
8284
"scala_proto_enable_all_options": attr.bool(),
8385
"jmh": attr.bool(),
86+
"twitter_scrooge": attr.bool(),
8487
},
8588
)
8689

@@ -210,3 +213,12 @@ load("@@{rules_scala_repo}//jmh/toolchain:toolchain.bzl", "setup_jmh_toolchain")
210213
211214
setup_jmh_toolchain(name = "jmh_toolchain")
212215
"""
216+
217+
_TWITTER_SCROOGE_TOOLCHAIN_BUILD = """
218+
load(
219+
"@@{rules_scala_repo}//twitter_scrooge/toolchain:toolchain.bzl",
220+
"setup_scrooge_toolchain",
221+
)
222+
223+
setup_scrooge_toolchain(name = "scrooge_toolchain")
224+
"""

scala/toolchains.bzl

+30-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ load("//scalatest:scalatest.bzl", "scalatest_artifact_ids")
1515
load("//specs2:specs2.bzl", "specs2_artifact_ids")
1616
load("//specs2:specs2_junit.bzl", "specs2_junit_artifact_ids")
1717
load("//third_party/repositories:repositories.bzl", "repositories")
18+
load(
19+
"//twitter_scrooge/toolchain:toolchain.bzl",
20+
"twitter_scrooge_artifact_ids",
21+
)
1822
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSIONS")
1923

2024
def scala_toolchains(
@@ -33,7 +37,13 @@ def scala_toolchains(
3337
scalafmt_default_config_path = ".scalafmt.conf",
3438
scala_proto = False,
3539
scala_proto_enable_all_options = False,
36-
jmh = False):
40+
jmh = False,
41+
twitter_scrooge = False,
42+
libthrift = None,
43+
scrooge_core = None,
44+
scrooge_generator = None,
45+
util_core = None,
46+
util_logging = None):
3747
"""Instantiates @io_bazel_rules_scala_toolchains and all its dependencies.
3848
3949
Provides a unified interface to configuring rules_scala both directly in a
@@ -86,6 +96,13 @@ def scala_toolchains(
8696
toolchain with all options enabled; `scala_proto` must also be
8797
`True` for this to take effect
8898
jmh: whether to instantiate the jmh toolchain
99+
twitter_scrooge: whether to instantiate the twitter_scrooge toolchain
100+
libthrift: label to a libthrift artifact for twitter_scrooge
101+
scrooge_core: label to a scrooge_core artifact for twitter_scrooge
102+
scrooge_generator: label to a scrooge_generator artifact for
103+
twitter_scrooge
104+
util_core: label to a util_core artifact for twitter_scrooge
105+
util_logging: label to a util_logging artifact for twitter_scrooge
89106
"""
90107
scala_repositories(
91108
maven_servers = maven_servers,
@@ -130,6 +147,17 @@ def scala_toolchains(
130147
id: False
131148
for id in jmh_artifact_ids()
132149
})
150+
if twitter_scrooge:
151+
artifact_ids_to_fetch_sources.update({
152+
id: False
153+
for id in twitter_scrooge_artifact_ids(
154+
libthrift = libthrift,
155+
scrooge_core = scrooge_core,
156+
scrooge_generator = scrooge_generator,
157+
util_core = util_core,
158+
util_logging = util_logging,
159+
)
160+
})
133161

134162
for scala_version in SCALA_VERSIONS:
135163
version_specific_artifact_ids = {}
@@ -168,6 +196,7 @@ def scala_toolchains(
168196
scala_proto = scala_proto,
169197
scala_proto_enable_all_options = scala_proto_enable_all_options,
170198
jmh = jmh,
199+
twitter_scrooge = twitter_scrooge,
171200
)
172201

173202
def scala_register_toolchains():

test_version.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ run_in_test_repo() {
4646

4747
if [[ -n "$TWITTER_SCROOGE_VERSION" ]]; then
4848
local version_param="version = \"$TWITTER_SCROOGE_VERSION\""
49-
scrooge_ws="scrooge_repositories($version_param)"
49+
scrooge_ws="$version_param"
5050
fi
5151

5252
sed -e "s%\${twitter_scrooge_repositories}%${scrooge_ws}\n%" \

test_version/WORKSPACE.template

+5-6
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ load("@io_bazel_rules_scala//scala:scala_cross_version.bzl", "extract_major_vers
6161

6262
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_toolchains")
6363

64+
load(":scrooge_repositories.bzl", "scrooge_repositories")
65+
66+
scrooge_repositories(${twitter_scrooge_repositories})
67+
6468
scala_toolchains(
6569
fetch_sources = True,
6670
scala_proto = True,
@@ -70,11 +74,6 @@ scala_toolchains(
7074

7175
register_toolchains(
7276
"@io_bazel_rules_scala//scala:unused_dependency_checker_error_toolchain",
73-
"@io_bazel_rules_scala//testing:testing_toolchain",
77+
"@twitter_scrooge_test_toolchain//...:all",
7478
"@io_bazel_rules_scala_toolchains//...:all",
7579
)
76-
77-
load(":scrooge_repositories.bzl", "scrooge_repositories")
78-
${twitter_scrooge_repositories}
79-
load("@io_bazel_rules_scala//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")
80-
twitter_scrooge()

test_version/version_specific_tests_dir/scrooge_repositories.bzl

+30-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1+
load("@io_bazel_rules_scala//scala:scala.bzl", "scala_toolchains_repo")
2+
load(
3+
"@io_bazel_rules_scala//scala:scala_cross_version.bzl",
4+
"default_maven_server_urls",
5+
)
16
load(
27
"@io_bazel_rules_scala//scala:scala_maven_import_external.bzl",
38
_scala_maven_import_external = "scala_maven_import_external",
49
)
510
load(
6-
"@io_bazel_rules_scala//scala:scala_cross_version.bzl",
7-
"default_maven_server_urls",
11+
"@io_bazel_rules_scala//twitter_scrooge/toolchain:toolchain.bzl",
12+
"twitter_scrooge",
813
)
914

1015
def _import_external(id, artifact, sha256, deps = [], runtime_deps = []):
1116
_scala_maven_import_external(
1217
name = id,
18+
generated_rule_name = id,
1319
artifact = artifact,
1420
artifact_sha256 = sha256,
1521
licenses = ["notice"],
@@ -20,8 +26,11 @@ def _import_external(id, artifact, sha256, deps = [], runtime_deps = []):
2026
fetch_sources = False,
2127
)
2228

23-
def scrooge_repositories(version):
29+
def scrooge_repositories(version = None):
30+
use_labels = False
31+
2432
if version == "18.6.0":
33+
use_labels = True
2534
_import_external(
2635
id = "io_bazel_rules_scala_scrooge_core",
2736
artifact = "com.twitter:scrooge-core_2.11:18.6.0",
@@ -48,7 +57,8 @@ def scrooge_repositories(version):
4857
sha256 = "73ddd61cedabd4dab82b30e6c52c1be6c692b063b8ba310d716ead9e3b4e9267",
4958
)
5059

51-
if version == "21.2.0":
60+
elif version == "21.2.0":
61+
use_labels = True
5262
_import_external(
5363
id = "io_bazel_rules_scala_scrooge_core",
5464
artifact = "com.twitter:scrooge-core_2.11:21.2.0",
@@ -74,3 +84,19 @@ def scrooge_repositories(version):
7484
artifact = "com.twitter:util-logging_2.11:21.2.0",
7585
sha256 = "f3b62465963fbf0fe9860036e6255337996bb48a1a3f21a29503a2750d34f319",
7686
)
87+
88+
if use_labels:
89+
twitter_scrooge(
90+
scrooge_core = "@io_bazel_rules_scala_scrooge_core",
91+
scrooge_generator = "@io_bazel_rules_scala_scrooge_generator",
92+
util_core = "@io_bazel_rules_scala_util_core",
93+
util_logging = "@io_bazel_rules_scala_util_logging",
94+
register_toolchains = False,
95+
)
96+
else:
97+
twitter_scrooge(register_toolchains = False)
98+
99+
scala_toolchains_repo(
100+
name = "twitter_scrooge_test_toolchain",
101+
twitter_scrooge = True,
102+
)

test_version/version_specific_tests_dir/twitter_scrooge/BUILD

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dependencies_to_test = [
88
deps_with_external_binds = [
99
(
1010
dep_name,
11-
"//external:io_bazel_rules_scala/dependency/thrift/{}".format(dep_name),
11+
"@io_bazel_rules_scala_{}".format(dep_name),
1212
)
1313
for dep_name in dependencies_to_test
1414
]

twitter_scrooge/BUILD

+14-85
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,14 @@
1-
load("//twitter_scrooge/toolchain:toolchain.bzl", "export_scrooge_deps", "scrooge_toolchain")
2-
load("//scala:providers.bzl", "declare_deps_provider")
3-
4-
scrooge_toolchain(
5-
name = "scrooge_toolchain_impl",
6-
visibility = ["//visibility:public"],
7-
)
8-
9-
toolchain(
10-
name = "scrooge_toolchain",
11-
toolchain = ":scrooge_toolchain_impl",
12-
toolchain_type = "@io_bazel_rules_scala//twitter_scrooge/toolchain:scrooge_toolchain_type",
13-
visibility = ["//visibility:public"],
14-
)
15-
16-
declare_deps_provider(
17-
name = "aspect_compile_classpath_provider",
18-
deps_id = "aspect_compile_classpath",
19-
visibility = ["//visibility:public"],
20-
deps = [
21-
"//external:io_bazel_rules_scala/dependency/thrift/javax_annotation_api",
22-
"//external:io_bazel_rules_scala/dependency/thrift/libthrift",
23-
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_core",
24-
"//external:io_bazel_rules_scala/dependency/thrift/util_core",
25-
"//scala/private/toolchain_deps:scala_library_classpath",
26-
],
27-
)
28-
29-
declare_deps_provider(
30-
name = "compile_classpath_provider",
31-
deps_id = "compile_classpath",
32-
visibility = ["//visibility:public"],
33-
deps = [
34-
"//external:io_bazel_rules_scala/dependency/thrift/libthrift",
35-
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_core",
36-
"//scala/private/toolchain_deps:scala_library_classpath",
37-
],
38-
)
39-
40-
declare_deps_provider(
41-
name = "scrooge_generator_classpath_provider",
42-
deps_id = "scrooge_generator_classpath",
43-
visibility = ["//visibility:public"],
44-
deps = [
45-
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_generator",
46-
],
47-
)
48-
49-
declare_deps_provider(
50-
name = "compiler_classpath_provider",
51-
deps_id = "compiler_classpath",
52-
visibility = ["//visibility:public"],
53-
deps = [
54-
"//external:io_bazel_rules_scala/dependency/thrift/mustache",
55-
"//external:io_bazel_rules_scala/dependency/thrift/scopt",
56-
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_generator",
57-
"//external:io_bazel_rules_scala/dependency/thrift/util_core",
58-
"//external:io_bazel_rules_scala/dependency/thrift/util_logging",
59-
"//scala/private/toolchain_deps:parser_combinators",
60-
],
61-
)
62-
63-
export_scrooge_deps(
64-
name = "compile_classpath",
65-
deps_id = "compile_classpath",
66-
visibility = ["//visibility:public"],
67-
)
68-
69-
export_scrooge_deps(
70-
name = "aspect_compile_classpath",
71-
deps_id = "aspect_compile_classpath",
72-
visibility = ["//visibility:public"],
73-
)
74-
75-
export_scrooge_deps(
76-
name = "scrooge_generator_classpath",
77-
deps_id = "scrooge_generator_classpath",
78-
visibility = ["//visibility:public"],
79-
)
80-
81-
export_scrooge_deps(
82-
name = "compiler_classpath",
83-
deps_id = "compiler_classpath",
84-
visibility = ["//visibility:public"],
85-
)
1+
load(
2+
"//twitter_scrooge/toolchain:toolchain.bzl",
3+
"DEP_PROVIDERS",
4+
"export_scrooge_deps",
5+
)
6+
7+
[
8+
export_scrooge_deps(
9+
name = dep,
10+
deps_id = dep,
11+
visibility = ["//visibility:public"],
12+
)
13+
for dep in DEP_PROVIDERS
14+
]

0 commit comments

Comments
 (0)