Skip to content

Commit e9c7529

Browse files
committed
Merge branch 'bzlmod-update-protocbridge-and-grpc' into bzlmod-rebuilding
2 parents 297645d + de8214b commit e9c7529

File tree

25 files changed

+2194
-438
lines changed

25 files changed

+2194
-438
lines changed

scala/private/macros/scala_repositories.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ def _artifact_ids(scala_version):
200200
"io_bazel_rules_scala_scala_library",
201201
"io_bazel_rules_scala_scala_parser_combinators",
202202
"io_bazel_rules_scala_scala_xml",
203+
"org_scala_lang_modules_scala_collection_compat",
203204
]
204205

205206
if scala_version.startswith("2."):

scala_proto/BUILD

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
load(
2-
"//scala_proto:scala_proto_toolchain.bzl",
3-
"scala_proto_deps_toolchain",
4-
"scala_proto_toolchain",
5-
)
1+
load("//scala:providers.bzl", "declare_deps_provider")
62
load(
73
"//scala_proto/default:default_deps.bzl",
84
"DEFAULT_SCALAPB_COMPILE_DEPS",
95
"DEFAULT_SCALAPB_GRPC_DEPS",
6+
"DEFAULT_SCALAPB_WORKER_DEPS",
107
)
11-
load("//scala:providers.bzl", "declare_deps_provider")
128
load("//scala_proto/private:toolchain_deps.bzl", "export_scalapb_toolchain_deps")
9+
load(
10+
"//scala_proto:scala_proto_toolchain.bzl",
11+
"scala_proto_deps_toolchain",
12+
"scala_proto_toolchain",
13+
)
1314

1415
toolchain_type(
1516
name = "toolchain_type",
@@ -80,11 +81,7 @@ declare_deps_provider(
8081
name = "scalapb_worker_deps_provider",
8182
deps_id = "scalapb_worker_deps",
8283
visibility = ["//visibility:public"],
83-
deps = [
84-
"@com_google_protobuf//:protobuf_java",
85-
"@scala_proto_rules_scalapb_compilerplugin",
86-
"@scala_proto_rules_scalapb_protoc_bridge",
87-
],
84+
deps = DEFAULT_SCALAPB_WORKER_DEPS,
8885
)
8986

9087
export_scalapb_toolchain_deps(

scala_proto/default/default_deps.bzl

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# These are the compile/runtime dependencies needed for scalapb compilation
22
# and grpc compile/runtime.
33
#
4-
# In a complex environment you may want to update the toolchain to not refer to these anymore
5-
# If you are using a resolver (like bazel-deps) that can export compile + runtime jar paths
6-
# for you, then you should only need much shorter dependency lists. This needs to be the unrolled
7-
# transitive path to be used without such a facility.
8-
#
4+
# In a complex environment you may want to update the toolchain to not refer to
5+
# these anymore If you are using a resolver (like bazel-deps) that can export
6+
# compile + runtime jar paths for you, then you should only need much shorter
7+
# dependency lists. This needs to be the unrolled transitive path to be used
8+
# without such a facility.
9+
10+
load("//scala:scala_cross_version_select.bzl", "select_for_scala_version")
11+
912
DEFAULT_SCALAPB_COMPILE_DEPS = [
1013
"//scala/private/toolchain_deps:scala_library_classpath",
1114
"@com_google_protobuf//:protobuf_java",
@@ -41,3 +44,12 @@ DEFAULT_SCALAPB_GRPC_DEPS = [
4144
"@scala_proto_rules_perfmark_api",
4245
"@scala_proto_rules_scalapb_runtime_grpc",
4346
]
47+
48+
DEFAULT_SCALAPB_WORKER_DEPS = [
49+
"@com_google_protobuf//:protobuf_java",
50+
"@scala_proto_rules_scalapb_compilerplugin",
51+
"@scala_proto_rules_scalapb_protoc_bridge",
52+
] + select_for_scala_version(
53+
any_2_11 = [],
54+
since_2_12 = ["@scala_proto_rules_scalapb_protoc_gen"],
55+
)

scala_proto/default/repositories.bzl

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,39 @@
11
load("//scala:scala_cross_version.bzl", "default_maven_server_urls")
22
load("//third_party/repositories:repositories.bzl", "repositories")
3+
load("@io_bazel_rules_scala_config//:config.bzl", "SCALA_VERSION")
34

45
def scala_proto_default_repositories(
56
maven_servers = default_maven_server_urls(),
6-
overriden_artifacts = {}):
7+
scala_version = SCALA_VERSION,
8+
overriden_artifacts = {},
9+
register_toolchains = True):
710
repositories(
8-
for_artifact_ids = [
11+
for_artifact_ids = ([] if SCALA_VERSION.startswith("2.11.") else [
12+
"dev_dirs_directories",
13+
"scala_proto_rules_scalapb_protoc_gen",
14+
]) + [
15+
"com_google_android_annotations",
16+
"com_google_code_findbugs_jsr305",
17+
"com_google_code_gson_gson",
18+
"com_google_errorprone_error_prone_annotations",
19+
"com_google_j2objc_j2objc_annotations",
920
"com_google_protobuf_protobuf_java",
1021
"com_lihaoyi_fastparse",
1122
"com_lihaoyi_sourcecode",
23+
"io_bazel_rules_scala_failureaccess",
1224
"io_bazel_rules_scala_guava",
25+
"org_codehaus_mojo_animal_sniffer_annotations",
26+
"org_checkerframework_checker_qual",
1327
"scala_proto_rules_disruptor",
14-
"scala_proto_rules_instrumentation_api",
1528
"scala_proto_rules_grpc_api",
1629
"scala_proto_rules_grpc_context",
1730
"scala_proto_rules_grpc_core",
1831
"scala_proto_rules_grpc_netty",
1932
"scala_proto_rules_grpc_protobuf",
33+
"scala_proto_rules_grpc_protobuf_lite",
2034
"scala_proto_rules_grpc_stub",
35+
"scala_proto_rules_grpc_util",
36+
"scala_proto_rules_instrumentation_api",
2137
"scala_proto_rules_netty_buffer",
2238
"scala_proto_rules_netty_codec",
2339
"scala_proto_rules_netty_codec_http",
@@ -28,11 +44,13 @@ def scala_proto_default_repositories(
2844
"scala_proto_rules_netty_handler_proxy",
2945
"scala_proto_rules_netty_resolver",
3046
"scala_proto_rules_netty_transport",
47+
"scala_proto_rules_netty_transport_native_unix_common",
3148
"scala_proto_rules_opencensus_api",
3249
"scala_proto_rules_opencensus_contrib_grpc_metrics",
3350
"scala_proto_rules_opencensus_impl",
3451
"scala_proto_rules_opencensus_impl_core",
3552
"scala_proto_rules_perfmark_api",
53+
"scala_proto_rules_proto_google_common_protos",
3654
"scala_proto_rules_scalapb_compilerplugin",
3755
"scala_proto_rules_scalapb_lenses",
3856
"scala_proto_rules_scalapb_protoc_bridge",
@@ -44,4 +62,7 @@ def scala_proto_default_repositories(
4462
overriden_artifacts = overriden_artifacts,
4563
)
4664

47-
native.register_toolchains("@io_bazel_rules_scala//scala_proto:default_deps_toolchain")
65+
if register_toolchains:
66+
native.register_toolchains(
67+
str(Label("//scala_proto:default_deps_toolchain")),
68+
)

scala_proto/scala_proto_toolchain.bzl

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
load("@io_bazel_rules_scala//scala:providers.bzl", "DepsInfo")
1+
load("//scala:providers.bzl", "DepsInfo")
22

33
def _generators(ctx):
44
return dict(
@@ -7,9 +7,12 @@ def _generators(ctx):
77
)
88

99
def _generators_jars(ctx):
10+
generator_deps = ctx.attr.extra_generator_dependencies + [
11+
ctx.attr._main_generator_dep,
12+
]
1013
return depset(transitive = [
1114
dep[JavaInfo].transitive_runtime_jars
12-
for dep in ctx.attr.extra_generator_dependencies
15+
for dep in generator_deps
1316
])
1417

1518
def _generators_opts(ctx):
@@ -74,18 +77,20 @@ scala_proto_toolchain = rule(
7477
"code_generator": attr.label(
7578
executable = True,
7679
cfg = "exec",
77-
default = Label("@io_bazel_rules_scala//src/scala/scripts:scalapb_worker"),
80+
default = Label("//src/scala/scripts:scalapb_worker"),
7881
allow_files = True,
7982
),
80-
"main_generator": attr.string(default = "scalapb.ScalaPbCodeGenerator"),
83+
"main_generator": attr.string(
84+
default = "scripts.ScalaPbCodeGenerator",
85+
),
8186
"named_generators": attr.string_dict(),
8287
"extra_generator_dependencies": attr.label_list(
8388
providers = [JavaInfo],
8489
),
8590
"scalac": attr.label(
8691
executable = True,
8792
cfg = "exec",
88-
default = Label("@io_bazel_rules_scala//src/java/io/bazel/rulesscala/scalac"),
93+
default = Label("//src/java/io/bazel/rulesscala/scalac"),
8994
allow_files = True,
9095
),
9196
"protoc": attr.label(
@@ -105,6 +110,14 @@ scala_proto_toolchain = rule(
105110
[proto rules documentation](https://docs.bazel.build/versions/master/be/protocol-buffer.html#proto_library)
106111
""",
107112
),
113+
"_main_generator_dep": attr.label(
114+
default = Label(
115+
"//src/scala/scripts:scalapb_codegenerator_wrapper",
116+
),
117+
allow_single_file = True,
118+
executable = False,
119+
cfg = "exec",
120+
),
108121
},
109122
)
110123

@@ -119,9 +132,9 @@ scala_proto_deps_toolchain = rule(
119132
attrs = {
120133
"dep_providers": attr.label_list(
121134
default = [
122-
"@io_bazel_rules_scala//scala_proto:scalapb_compile_deps_provider",
123-
"@io_bazel_rules_scala//scala_proto:scalapb_grpc_deps_provider",
124-
"@io_bazel_rules_scala//scala_proto:scalapb_worker_deps_provider",
135+
Label("//scala_proto:scalapb_compile_deps_provider"),
136+
Label("//scala_proto:scalapb_grpc_deps_provider"),
137+
Label("//scala_proto:scalapb_worker_deps_provider"),
125138
],
126139
cfg = "target",
127140
providers = [DepsInfo],

scripts/create_repository.py

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,14 @@
3232
KIND_PROJECTOR_VERSION = "0.13.3"
3333
PROTOBUF_JAVA_VERSION = "4.28.3"
3434
JLINE_VERSION = '3.27.1'
35-
SCALAPB_VERSION = '0.9.8'
35+
SCALAPB_VERSION = '0.11.17'
36+
PROTOC_BRIDGE_VERSION = '0.9.7'
37+
GRPC_VERSION = '1.68.1'
38+
GRPC_COMMON_PROTOS_VERSION = '2.48.0'
39+
GRPC_LIBS = ['netty', 'protobuf', 'stub']
40+
GUAVA_VERSION = '33.3.1-jre'
3641

37-
EXCLUDED_ARTIFACTS = set()
42+
EXCLUDED_ARTIFACTS = set(["com.google.guava:listenablefuture"])
3843

3944
THIS_FILE = Path(__file__)
4045
REPO_ROOT = THIS_FILE.parent.parent
@@ -79,26 +84,37 @@ def select_root_artifacts(scala_version, scala_major, is_scala_3) -> List[str]:
7984

8085
scalafmt_version = SCALAFMT_VERSION
8186
scalapb_version = SCALAPB_VERSION
87+
protoc_bridge_version = PROTOC_BRIDGE_VERSION
8288

8389
if scala_major == '2.11':
8490
scalafmt_version = '2.7.5'
8591
scalapb_version = '0.9.8'
92+
protoc_bridge_version = '0.7.14'
8693

8794
root_artifacts = [
95+
'com.google.api.grpc:proto-google-common-protos:' +
96+
GRPC_COMMON_PROTOS_VERSION,
97+
f'com.google.guava:guava:{GUAVA_VERSION}',
8898
f'com.google.protobuf:protobuf-java:{PROTOBUF_JAVA_VERSION}',
99+
f'com.thesamet.scalapb:compilerplugin_{scala_2_major}:' +
100+
scalapb_version,
101+
f'com.thesamet.scalapb:protoc-bridge_{scala_2_major}:' +
102+
protoc_bridge_version,
89103
f'com.thesamet.scalapb:scalapb-runtime_{scala_2_major}:' +
90104
scalapb_version,
105+
f'com.thesamet.scalapb:scalapb-runtime-grpc_{scala_2_major}:' +
106+
scalapb_version,
91107
f'org.scala-lang.modules:scala-parser-combinators_{scala_2_major}:' +
92108
PARSER_COMBINATORS_VERSION,
93-
f'org.scalameta:scalafmt-core_{scala_2_major}:{scalafmt_version}',
94-
f'org.scalatest:scalatest_{scalatest_major}:{SCALATEST_VERSION}',
95109
f'org.scala-lang:scala-compiler:{scala_2_version}',
96110
f'org.scala-lang:scala-library:{scala_2_version}',
97111
f'org.scala-lang:scala-reflect:{scala_2_version}',
98112
f'org.scala-lang:scalap:{scala_2_version}',
113+
f'org.scalameta:scalafmt-core_{scala_2_major}:{scalafmt_version}',
114+
f'org.scalatest:scalatest_{scalatest_major}:{SCALATEST_VERSION}',
99115
f'org.typelevel:kind-projector_{scala_2_version}:' +
100116
KIND_PROJECTOR_VERSION,
101-
]
117+
] + [f'io.grpc:grpc-{lib}:{GRPC_VERSION}' for lib in GRPC_LIBS]
102118

103119
if scala_version == max_scala_2_version or is_scala_3:
104120
# Since the Scala 2.13 compiler is included in Scala 3 deps.

src/scala/scripts/BUILD

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
load("//scala:scala.bzl", "scala_binary", "scala_library")
2+
load("//scala:scala_cross_version_select.bzl", "select_for_scala_version")
23

34
scala_library(
45
name = "scrooge_worker_lib",
@@ -22,6 +23,18 @@ scala_binary(
2223
],
2324
)
2425

26+
scala_library(
27+
name = "scalapb_codegenerator_wrapper",
28+
srcs = select_for_scala_version(
29+
any_2_11 = ["ScalaPbCodeGeneratorWrapper_2_11.scala"],
30+
since_2_12 = ["ScalaPbCodeGeneratorWrapper.scala"],
31+
),
32+
visibility = ["//visibility:public"],
33+
deps = [
34+
"//scala_proto:scalapb_worker_deps",
35+
],
36+
)
37+
2538
scala_library(
2639
name = "scalapb_worker_lib",
2740
srcs = ["ScalaPBWorker.scala"],
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package scripts
2+
3+
import protocgen.{CodeGenApp,CodeGenRequest,CodeGenResponse}
4+
5+
object ScalaPbCodeGenerator extends CodeGenApp {
6+
def process(request: CodeGenRequest): CodeGenResponse = {
7+
try {
8+
scalapb.ScalaPbCodeGenerator.process(request)
9+
10+
} catch {
11+
case e: Throwable =>
12+
val stackStream = new java.io.ByteArrayOutputStream
13+
e.printStackTrace(new java.io.PrintStream(stackStream))
14+
CodeGenResponse.fail(stackStream.toString())
15+
}
16+
}
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package scripts
2+
import com.google.protobuf.compiler.PluginProtos.CodeGeneratorResponse
3+
4+
object ScalaPbCodeGenerator extends protocbridge.ProtocCodeGenerator {
5+
override def run(req: Array[Byte]): Array[Byte] = {
6+
try {
7+
scalapb.ScalaPbCodeGenerator.run(req)
8+
9+
} catch {
10+
case e: Throwable =>
11+
val b = CodeGeneratorResponse.newBuilder
12+
val stackStream = new java.io.ByteArrayOutputStream
13+
14+
e.printStackTrace(new java.io.PrintStream(stackStream))
15+
b.setError(stackStream.toString())
16+
b.build.toByteArray
17+
}
18+
}
19+
}

test/TestServer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class TestServer(executionContext: ExecutionContext) { self =>
6767

6868
object TestClient {
6969
def apply(host: String, port: Int): TestClient = {
70-
val channel = ManagedChannelBuilder.forAddress(host, port).usePlaintext(true).build
70+
val channel = ManagedChannelBuilder.forAddress(host, port).usePlaintext().build
7171
val blockingStub = TestServiceGrpc.blockingStub(channel)
7272
new TestClient(channel, blockingStub)
7373
}

0 commit comments

Comments
 (0)