Skip to content

Commit 340e8f7

Browse files
committed
Bump to rules_proto 6.0.2, separate protobuf 21.7
This is in preparation for adding a `MODULE.bazel` file, which will bring in dependencies that use rules_proto 6.x. This change avoids that warning, and changing it now ensures that `WORKSPACE` builds are still compatible. As explained in the 6.0.0 release notes, rules_proto 6.x no longer depends directly on com_google_protobuf, so we need to import it separately. We're keeping the Protobuf version as 21.7 for now, because Protobuf 22.x requires C++14 at a minimum, which Bazel 6.x doesn't support by default: - https://protobuf.dev/news/v22/#c11-support - https://github.com/protocolbuffers/protobuf/releases/tag/v22.0 The downside is that, unline rules_proto-5.3.0-21.7, we now end up building (and occasionally rebuilding) `protoc` as part of our build. However, this also enables clients to try "Protobuf Toolchainization" to download precompiled `protoc` binaries. - https://github.com/bazelbuild/rules_proto/releases/tag/6.0.0 - https://docs.google.com/document/d/1CE6wJHNfKbUPBr7-mmk_0Yo3a4TaqcTPE0OWNuQkhPs/edit For now, Protobuf Toolchainization requires Bazel 6.5.0 or Bazel >= 7 and the `--incompatible_enable_proto_toolchain_resolution` flag: - https://bazel.build/reference/command-line-reference#flag--incompatible_enable_proto_toolchain_resolution I've got a working draft implementation in a separate branch, though that experiment is certainly not urgent.
1 parent 1aeaad4 commit 340e8f7

File tree

14 files changed

+178
-36
lines changed

14 files changed

+178
-36
lines changed

WORKSPACE

+11-4
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,22 @@ rules_scala_setup()
4545

4646
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4747

48-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
48+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4949

50-
# Declares @com_google_protobuf//:protoc pointing to released binary
51-
# This should stop building protoc during bazel build
52-
# See https://github.com/bazelbuild/rules_proto/pull/36
5350
rules_proto_dependencies()
5451

52+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
53+
54+
rules_proto_setup()
55+
56+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
57+
5558
rules_proto_toolchains()
5659

60+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
61+
62+
protobuf_deps()
63+
5764
load("//scala:scala_cross_version.bzl", "default_maven_server_urls")
5865
load("//twitter_scrooge:twitter_scrooge.bzl", "twitter_scrooge")
5966

dt_patches/test_dt_patches/WORKSPACE

+9-3
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,18 @@ rules_scala_toolchain_deps_repositories(
7676

7777
register_toolchains(":dt_scala_toolchain")
7878

79-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
79+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
8080

8181
rules_proto_dependencies()
8282

83+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
84+
85+
rules_proto_setup()
86+
87+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
88+
8389
rules_proto_toolchains()
8490

85-
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
91+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
8692

87-
scala_register_toolchains()
93+
protobuf_deps()

dt_patches/test_dt_patches_user_srcjar/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,22 @@ rules_scala_toolchain_deps_repositories(
125125

126126
register_toolchains(":dt_scala_toolchain")
127127

128-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
128+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
129129

130130
rules_proto_dependencies()
131131

132+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
133+
134+
rules_proto_setup()
135+
136+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
137+
132138
rules_proto_toolchains()
133139

140+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
141+
142+
protobuf_deps()
143+
134144
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
135145

136146
scala_register_toolchains()

examples/crossbuild/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,22 @@ rules_scala_setup()
4848

4949
rules_scala_toolchain_deps_repositories()
5050

51-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
51+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
5252

5353
rules_proto_dependencies()
5454

55+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
56+
57+
rules_proto_setup()
58+
59+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
60+
5561
rules_proto_toolchains()
5662

63+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
64+
65+
protobuf_deps()
66+
5767
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5868

5969
scala_register_toolchains()

examples/scala3/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,22 @@ rules_scala_setup()
4141

4242
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4343

44-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
44+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4545

4646
rules_proto_dependencies()
4747

48+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
49+
50+
rules_proto_setup()
51+
52+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
53+
4854
rules_proto_toolchains()
4955

56+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
57+
58+
protobuf_deps()
59+
5060
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5161

5262
scala_register_toolchains()

examples/semanticdb/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,22 @@ rules_scala_setup()
4444

4545
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4646

47-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
47+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4848

4949
rules_proto_dependencies()
5050

51+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
52+
53+
rules_proto_setup()
54+
55+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
56+
5157
rules_proto_toolchains()
5258

59+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
60+
61+
protobuf_deps()
62+
5363
#Register and use the custom toolchain that has semanticdb enabled
5464
register_toolchains(
5565
"//:semanticdb_toolchain",

examples/testing/multi_frameworks_toolchain/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,22 @@ rules_scala_setup()
4141

4242
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4343

44-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
44+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4545

4646
rules_proto_dependencies()
4747

48+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
49+
50+
rules_proto_setup()
51+
52+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
53+
4854
rules_proto_toolchains()
4955

56+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
57+
58+
protobuf_deps()
59+
5060
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5161

5262
scala_register_toolchains()

examples/testing/scalatest_repositories/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,22 @@ rules_scala_setup()
4141

4242
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4343

44-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
44+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4545

4646
rules_proto_dependencies()
4747

48+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
49+
50+
rules_proto_setup()
51+
52+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
53+
4854
rules_proto_toolchains()
4955

56+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
57+
58+
protobuf_deps()
59+
5060
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5161

5262
scala_register_toolchains()

examples/testing/specs2_junit_repositories/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,22 @@ rules_scala_setup()
4141

4242
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4343

44-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
44+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4545

4646
rules_proto_dependencies()
4747

48+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
49+
50+
rules_proto_setup()
51+
52+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
53+
4854
rules_proto_toolchains()
4955

56+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
57+
58+
protobuf_deps()
59+
5060
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5161

5262
scala_register_toolchains()

scala/private/macros/scala_repositories.bzl

+20-6
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,23 @@ def rules_scala_setup(scala_compiler_srcjar = None):
9292
],
9393
)
9494

95+
# Needed by protobuf-21.7 and Bazel 6.5.0, as later versions require C++14.
96+
if not native.existing_rule("com_google_absl"):
97+
http_archive(
98+
name = "com_google_absl",
99+
sha256 = "91ac87d30cc6d79f9ab974c51874a704de9c2647c40f6932597329a282217ba8",
100+
strip_prefix = "abseil-cpp-20220623.1",
101+
url = "https://github.com/abseil/abseil-cpp/archive/refs/tags/20220623.1.tar.gz",
102+
)
103+
104+
if not native.existing_rule("protobuf"):
105+
http_archive(
106+
name = "com_google_protobuf",
107+
sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae",
108+
strip_prefix = "protobuf-21.7",
109+
url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v21.7.tar.gz",
110+
)
111+
95112
if not native.existing_rule("rules_cc"):
96113
http_archive(
97114
name = "rules_cc",
@@ -112,12 +129,9 @@ def rules_scala_setup(scala_compiler_srcjar = None):
112129
if not native.existing_rule("rules_proto"):
113130
http_archive(
114131
name = "rules_proto",
115-
sha256 = "dc3fb206a2cb3441b485eb1e423165b231235a1ea9b031b4433cf7bc1fa460dd",
116-
strip_prefix = "rules_proto-5.3.0-21.7",
117-
urls = [
118-
"https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz",
119-
"https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz",
120-
],
132+
sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
133+
strip_prefix = "rules_proto-6.0.2",
134+
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
121135
)
122136

123137
for scala_version in SCALA_VERSIONS:

test_cross_build/WORKSPACE

+21-7
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,34 @@ py_repositories()
2424

2525
http_archive(
2626
name = "rules_proto",
27-
sha256 = "8e7d59a5b12b233be5652e3d29f42fba01c7cbab09f6b3a8d0a57ed6d1e9a0da",
28-
strip_prefix = "rules_proto-7e4afce6fe62dbff0a4a03450143146f9f2d7488",
29-
urls = [
30-
"https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
31-
"https://github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
32-
],
27+
sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
28+
strip_prefix = "rules_proto-6.0.2",
29+
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
30+
)
31+
32+
http_archive(
33+
name = "com_google_protobuf",
34+
sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae",
35+
strip_prefix = "protobuf-21.7",
36+
url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v21.7.tar.gz",
3337
)
3438

35-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
39+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
3640

3741
rules_proto_dependencies()
3842

43+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
44+
45+
rules_proto_setup()
46+
47+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
48+
3949
rules_proto_toolchains()
4050

51+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
52+
53+
protobuf_deps()
54+
4155
local_repository(
4256
name = "io_bazel_rules_scala",
4357
path = "..",

test_version/WORKSPACE.template

+18-7
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,31 @@ py_repositories()
2424

2525
http_archive(
2626
name = "rules_proto",
27-
sha256 = "8e7d59a5b12b233be5652e3d29f42fba01c7cbab09f6b3a8d0a57ed6d1e9a0da",
28-
strip_prefix = "rules_proto-7e4afce6fe62dbff0a4a03450143146f9f2d7488",
29-
urls = [
30-
"https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
31-
"https://github.com/bazelbuild/rules_proto/archive/7e4afce6fe62dbff0a4a03450143146f9f2d7488.tar.gz",
32-
],
27+
sha256 = "6fb6767d1bef535310547e03247f7518b03487740c11b6c6adb7952033fe1295",
28+
strip_prefix = "rules_proto-6.0.2",
29+
url = "https://github.com/bazelbuild/rules_proto/releases/download/6.0.2/rules_proto-6.0.2.tar.gz",
3330
)
3431

35-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
32+
http_archive(
33+
name = "com_google_protobuf",
34+
sha256 = "75be42bd736f4df6d702a0e4e4d30de9ee40eac024c4b845d17ae4cc831fe4ae",
35+
strip_prefix = "protobuf-21.7",
36+
url = "https://github.com/protocolbuffers/protobuf/archive/refs/tags/v21.7.tar.gz",
37+
)
3638

39+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
3740
rules_proto_dependencies()
3841

42+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
43+
rules_proto_setup()
44+
45+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
3946
rules_proto_toolchains()
4047

48+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
49+
50+
protobuf_deps()
51+
4152
local_repository(
4253
name = "io_bazel_rules_scala",
4354
path = "../../"

third_party/test/example_external_workspace/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,22 @@ rules_scala_setup()
4141

4242
rules_scala_toolchain_deps_repositories(fetch_sources = True)
4343

44-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
44+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
4545

4646
rules_proto_dependencies()
4747

48+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
49+
50+
rules_proto_setup()
51+
52+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
53+
4854
rules_proto_toolchains()
4955

56+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
57+
58+
protobuf_deps()
59+
5060
load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains")
5161

5262
scala_register_toolchains()

third_party/test/proto/WORKSPACE

+11-1
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,22 @@ load("@io_bazel_rules_scala//scala:scala.bzl", "scala_repositories")
3535

3636
scala_repositories()
3737

38-
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
38+
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
3939

4040
rules_proto_dependencies()
4141

42+
load("@rules_proto//proto:setup.bzl", "rules_proto_setup")
43+
44+
rules_proto_setup()
45+
46+
load("@rules_proto//proto:toolchains.bzl", "rules_proto_toolchains")
47+
4248
rules_proto_toolchains()
4349

50+
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
51+
52+
protobuf_deps()
53+
4454
load("@io_bazel_rules_scala//scala_proto:scala_proto.bzl", "scala_proto_repositories")
4555

4656
scala_proto_repositories()

0 commit comments

Comments
 (0)