Skip to content

Commit 0cdef83

Browse files
committed
Upgrade rules_scala to 7.1.0 to include scrooge fixes and fix scala build deps
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
1 parent b5fa4a5 commit 0cdef83

4 files changed

Lines changed: 84 additions & 29 deletions

File tree

WORKSPACE

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,27 @@ scala_config(scala_version = scala_version)
7373

7474
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains", "scala_toolchains")
7575

76-
scala_toolchains(fetch_sources = True, twitter_scrooge = True)
76+
# Configure twitter_scrooge toolchain with custom dependencies from thrift_deps.
77+
# Note: thrift_deps must be loaded before this is evaluated.
78+
# The finagle dependencies (finagle-thrift, finagle-core) are needed as compile
79+
# dependencies for the generated scrooge code when thrift services are defined.
80+
# We use scrooge_core_with_finagle which bundles finagle deps with scrooge_core.
81+
scala_toolchains(
82+
fetch_sources = True,
83+
twitter_scrooge = {
84+
"libthrift": "@thrift_deps//:org_apache_thrift_libthrift",
85+
# Use scrooge_core_with_finagle to include finagle on the compile classpath
86+
# for generated thrift service code. Must use @px// prefix to reference
87+
# the main workspace from within the generated @rules_scala_toolchains repo.
88+
"scrooge_core": "@px//src/stirling/source_connectors/socket_tracer/testing/containers/thriftmux:scrooge_core_with_finagle",
89+
"scrooge_generator": "@thrift_deps//:com_twitter_scrooge_generator_2_13",
90+
"util_core": "@thrift_deps//:com_twitter_util_core_2_13",
91+
"util_logging": "@thrift_deps//:com_twitter_util_logging_2_13",
92+
"javax_annotation_api": "@thrift_deps//:javax_annotation_javax_annotation_api",
93+
"mustache": "@thrift_deps//:com_github_spullara_mustache_java_compiler",
94+
"scopt": "@thrift_deps//:com_github_scopt_scopt_2_13",
95+
},
96+
)
7797

7898
scala_register_toolchains()
7999

@@ -193,26 +213,6 @@ load("@thrift_deps//:defs.bzl", thrift_pinned_maven_install = "pinned_maven_inst
193213

194214
thrift_pinned_maven_install()
195215

196-
# twitter_scrooge will use incompatible versions of @scrooge_jars and @thrift_jars.
197-
# These bind statements ensure that the correct versions of finagle libthrift, scrooge core
198-
# and scrooge generator are used to ensure successful compilation.
199-
# See https://github.com/bazelbuild/rules_scala/issues/592 and
200-
# https://github.com/bazelbuild/rules_scala/pull/847 for more details.
201-
bind(
202-
name = "io_bazel_rules_scala/dependency/thrift/scrooge_core",
203-
actual = "//src/stirling/source_connectors/socket_tracer/testing/containers/thriftmux:scrooge_jars",
204-
)
205-
206-
bind(
207-
name = "io_bazel_rules_scala/dependency/thrift/scrooge_generator",
208-
actual = "//src/stirling/source_connectors/socket_tracer/testing/containers/thriftmux:scrooge_jars",
209-
)
210-
211-
bind(
212-
name = "io_bazel_rules_scala/dependency/thrift/libthrift",
213-
actual = "//src/stirling/source_connectors/socket_tracer/testing/containers/thriftmux:thrift_jars",
214-
)
215-
216216
# gazelle:repo bazel_gazelle
217217
# Gazelle depes need to be loaded last to make sure they don't override our dependencies.
218218
# The first one wins when it comes to package declaration.

bazel/repository_locations.bzl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -439,18 +439,18 @@ REPOSITORY_LOCATIONS = dict(
439439
],
440440
),
441441
io_bazel_rules_scala = dict(
442-
sha256 = "a4700d6e6cdf13cf85e29029ec998e2ec3ba94791606ec83d2c96e3c5b0aebed",
442+
sha256 = "6a900a39bf643c5c9308c8200f9a61e27588dc54a67aa08fcfc798f25add4f7b",
443443
urls = [
444-
"https://github.com/bazelbuild/rules_scala/releases/download/v7.0.0/rules_scala-v7.0.0.tar.gz",
444+
"https://github.com/bazelbuild/rules_scala/releases/download/v7.1.0/rules_scala-v7.1.0.tar.gz",
445445
],
446-
strip_prefix = "rules_scala-7.0.0",
446+
strip_prefix = "rules_scala-7.1.0",
447447
),
448448
rules_scala = dict(
449-
sha256 = "a4700d6e6cdf13cf85e29029ec998e2ec3ba94791606ec83d2c96e3c5b0aebed",
449+
sha256 = "6a900a39bf643c5c9308c8200f9a61e27588dc54a67aa08fcfc798f25add4f7b",
450450
urls = [
451-
"https://github.com/bazelbuild/rules_scala/releases/download/v7.0.0/rules_scala-v7.0.0.tar.gz",
451+
"https://github.com/bazelbuild/rules_scala/releases/download/v7.1.0/rules_scala-v7.1.0.tar.gz",
452452
],
453-
strip_prefix = "rules_scala-7.0.0",
453+
strip_prefix = "rules_scala-7.1.0",
454454
),
455455
org_tensorflow = dict(
456456
sha256 = "a640d1f97be316a09301dfc9347e3d929ad4d9a2336e3ca23c32c93b0ff7e5d0",

bazel/thrift.bzl

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,32 @@
1717
load("@rules_jvm_external//:defs.bzl", "maven_install")
1818

1919
def thrift_deps(scala_version):
20-
# twitter_scrooge is now set up via scala_toolchains(twitter_scrooge = True) in WORKSPACE
20+
# twitter_scrooge is now set up via scala_toolchains(twitter_scrooge = {...}) in WORKSPACE
2121

2222
finagle_version = "22.7.0"
2323
scala_minor_version = ".".join(scala_version.split(".")[:2])
2424

2525
maven_install(
2626
name = "thrift_deps",
2727
artifacts = [
28+
# Finagle dependencies (needed for generated service code)
2829
"com.twitter:finagle-thriftmux_%s:%s" % (scala_minor_version, finagle_version),
30+
"com.twitter:finagle-thrift_%s:%s" % (scala_minor_version, finagle_version),
2931
"com.twitter:finagle-mux_%s:%s" % (scala_minor_version, finagle_version),
3032
"com.twitter:finagle-core_%s:%s" % (scala_minor_version, finagle_version),
33+
"com.twitter:finagle-http_%s:%s" % (scala_minor_version, finagle_version),
34+
# Scrooge dependencies (needed for code generation toolchain)
3135
"com.twitter:scrooge-core_%s:%s" % (scala_minor_version, finagle_version),
3236
"com.twitter:scrooge-generator_%s:%s" % (scala_minor_version, finagle_version),
33-
"com.twitter:finagle-http_%s:%s" % (scala_minor_version, finagle_version),
37+
"com.twitter:util-core_%s:%s" % (scala_minor_version, finagle_version),
38+
"com.twitter:util-logging_%s:%s" % (scala_minor_version, finagle_version),
39+
# Scrooge generator dependencies
40+
"com.github.spullara.mustache.java:compiler:0.8.18",
41+
"com.github.scopt:scopt_%s:4.0.0-RC2" % scala_minor_version,
42+
"javax.annotation:javax.annotation-api:1.3.2",
43+
# Thrift
3444
"org.apache.thrift:libthrift:0.10.0",
45+
# Logging
3546
"org.slf4j:slf4j-api:1.7.36",
3647
"ch.qos.logback:logback-core:1.2.10",
3748
"ch.qos.logback:logback-classic:1.2.10",

src/stirling/source_connectors/socket_tracer/testing/containers/thriftmux/BUILD.bazel

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,19 @@ thrift_library(
6767
srcs = glob(["**/*.thrift"]),
6868
)
6969

70+
# Scrooge core with finagle dependencies bundled.
71+
# This is used as the scrooge_core for the toolchain, so that the generated
72+
# service code has access to finagle classes at compile time.
73+
scala_library(
74+
name = "scrooge_core_with_finagle",
75+
visibility = ["//visibility:public"],
76+
exports = [
77+
"@thrift_deps//:com_twitter_finagle_core_2_13",
78+
"@thrift_deps//:com_twitter_finagle_thrift_2_13",
79+
"@thrift_deps//:com_twitter_scrooge_core_2_13",
80+
],
81+
)
82+
7083
scala_library(
7184
name = "scrooge_jars",
7285
visibility = ["//visibility:public"],
@@ -81,6 +94,31 @@ scala_library(
8194
],
8295
)
8396

97+
# Runtime dependencies for generated scrooge code (for downstream consumers)
98+
scala_library(
99+
name = "scrooge_runtime_deps",
100+
visibility = ["//visibility:public"],
101+
exports = [
102+
"@thrift_deps//:com_twitter_finagle_core_2_13",
103+
"@thrift_deps//:com_twitter_finagle_thrift_2_13",
104+
"@thrift_deps//:com_twitter_scrooge_core_2_13",
105+
"@thrift_deps//:org_apache_thrift_libthrift",
106+
],
107+
)
108+
109+
# Full finagle dependencies for Server/Client scala files
110+
scala_library(
111+
name = "finagle_deps",
112+
visibility = ["//visibility:public"],
113+
exports = [
114+
"@thrift_deps//:com_twitter_finagle_core_2_13",
115+
"@thrift_deps//:com_twitter_finagle_http_2_13",
116+
"@thrift_deps//:com_twitter_finagle_mux_2_13",
117+
"@thrift_deps//:com_twitter_finagle_thrift_2_13",
118+
"@thrift_deps//:com_twitter_finagle_thriftmux_2_13",
119+
],
120+
)
121+
84122
scala_library(
85123
name = "thrift_jars",
86124
visibility = ["//visibility:public"],
@@ -94,6 +132,9 @@ scrooge_scala_library(
94132
deps = [
95133
":thrift_library",
96134
],
135+
exports = [
136+
":scrooge_runtime_deps",
137+
],
97138
)
98139

99140
scala_library(
@@ -110,6 +151,7 @@ scala_binary(
110151
srcs = glob(["**/*.scala"]),
111152
main_class = "Server",
112153
deps = [
154+
":finagle_deps",
113155
":thriftmux_scrooge",
114156
],
115157
)
@@ -119,6 +161,7 @@ scala_binary(
119161
srcs = glob(["**/*.scala"]),
120162
main_class = "Client",
121163
deps = [
164+
":finagle_deps",
122165
":thriftmux_scrooge",
123166
],
124167
)
@@ -144,6 +187,7 @@ scala_image(
144187
],
145188
main_class = "Server",
146189
deps = [
190+
":finagle_deps",
147191
":logging",
148192
":thriftmux_scrooge",
149193
],

0 commit comments

Comments
 (0)