Skip to content

Commit 67e886c

Browse files
Copilotphlax
andcommitted
Add protobuf 33.4.envoy module with configurable zlib support
Co-authored-by: phlax <[email protected]>
1 parent 15a6914 commit 67e886c

File tree

4 files changed

+261
-0
lines changed

4 files changed

+261
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
2+
# https://github.com/protocolbuffers/protobuf/issues/14313
3+
4+
module(
5+
name = "protobuf",
6+
version = "33.4.envoy",
7+
compatibility_level = 1,
8+
repo_name = "com_google_protobuf",
9+
)
10+
11+
# LOWER BOUND dependency versions.
12+
# Bzlmod follows MVS:
13+
# https://bazel.build/versions/6.0.0/build/bzlmod#version-resolution
14+
# Thus the highest version in their module graph is resolved.
15+
16+
# These dependencies must be declared before the other rules dependencies.
17+
bazel_dep(name = "rules_apple", version = "3.16.0", repo_name = "build_bazel_rules_apple")
18+
bazel_dep(name = "apple_support", version = "1.15.1", repo_name = "build_bazel_apple_support")
19+
20+
# Keep apple_support on 1.15.1 for now to avoid this issue:
21+
# https://github.com/bazelbuild/apple_support/issues/316
22+
single_version_override(
23+
module_name = "apple_support",
24+
version = "1.15.1",
25+
)
26+
27+
#ifndef PROTO2_OPENSOURCE
28+
# LINT.IfChange
29+
#endif // PROTO2_OPENSOURCE
30+
# protoc dependencies
31+
bazel_dep(name = "abseil-cpp", version = "20250512.1")
32+
bazel_dep(name = "rules_cc", version = "0.0.17")
33+
bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
34+
#ifndef PROTO2_OPENSOURCE
35+
# LINT.ThenChange(//depot/google3/third_party/protobuf/compiler/notices.h)
36+
#endif // PROTO2_OPENSOURCE
37+
38+
# other dependencies
39+
bazel_dep(name = "bazel_features", version = "1.33.0", repo_name = "proto_bazel_features")
40+
bazel_dep(name = "bazel_skylib", version = "1.7.1")
41+
bazel_dep(name = "jsoncpp", version = "1.9.6")
42+
bazel_dep(name = "rules_java", version = "8.6.1")
43+
bazel_dep(name = "rules_jvm_external", version = "6.7")
44+
bazel_dep(name = "rules_kotlin", version = "1.9.6")
45+
bazel_dep(name = "rules_license", version = "1.0.0")
46+
bazel_dep(name = "rules_pkg", version = "1.0.1")
47+
bazel_dep(name = "rules_python", version = "1.6.0")
48+
49+
# Pin to rules_proto to 7.1.0 to avoid toolchain incompatibilities when
50+
# --incompatible_enable_proto_toolchain_resolution=true in Bazel 7.
51+
# rules_proto 7.0.2 from deps incorrectly rules_proto's toolchain_type but protobuf's toolchain, but
52+
# 7.1.0 uses protobuf's toolchain and toolchain_type.
53+
bazel_dep(name = "rules_proto", version = "7.1.0")
54+
55+
bazel_dep(name = "rules_shell", version = "0.2.0")
56+
bazel_dep(name = "platforms", version = "0.0.11")
57+
58+
# Define toolchains that use pre-built protoc binaries.
59+
prebuilt_protoc = use_extension("//bazel/private:prebuilt_protoc_extension.bzl", "protoc")
60+
use_repo(
61+
prebuilt_protoc,
62+
"prebuilt_protoc.linux_aarch_64",
63+
"prebuilt_protoc.osx_aarch_64",
64+
"prebuilt_protoc.linux_ppcle_64",
65+
"prebuilt_protoc.linux_s390_64",
66+
"prebuilt_protoc.linux_x86_32",
67+
"prebuilt_protoc.linux_x86_64",
68+
"prebuilt_protoc.osx_x86_64",
69+
"prebuilt_protoc.win32",
70+
"prebuilt_protoc.win64",
71+
)
72+
73+
# However this registration only matters if the config_setting for prefer_prebuilt_protoc is true,
74+
# using --@protobuf//bazel/toolchains:prefer_prebuilt_protoc
75+
register_toolchains("//bazel/private/toolchains/prebuilt:all")
76+
77+
# From-source protobuf toolchains
78+
# Fallback if nothing is already registered
79+
register_toolchains("//bazel/private/toolchains:all")
80+
81+
# Keep this list minimal; these dependencies will be part of the common `maven` install and could affect end-user projects.
82+
PROTOBUF_MAVEN_ARTIFACTS = [
83+
"com.google.code.findbugs:jsr305:3.0.2",
84+
"com.google.code.gson:gson:2.8.9",
85+
"com.google.errorprone:error_prone_annotations:2.5.1",
86+
"com.google.j2objc:j2objc-annotations:2.8",
87+
"com.google.guava:guava:32.0.1-jre",
88+
]
89+
90+
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
91+
maven.install(
92+
artifacts = PROTOBUF_MAVEN_ARTIFACTS,
93+
lock_file = "//:maven_install.json",
94+
repositories = [
95+
"https://repo1.maven.org/maven2",
96+
"https://repo.maven.apache.org/maven2",
97+
],
98+
)
99+
100+
# Use the default "maven" namespace because protobuf java targets are exposed to users
101+
# See https://github.com/protocolbuffers/protobuf/issues/21177
102+
use_repo(maven, "maven")
103+
104+
# Temporarily pin transitive dependency for https://github.com/bazelbuild/bazel/issues/24426
105+
bazel_dep(name = "re2", version = "2024-07-02.bcr.1")
106+
107+
# For clang-cl configuration
108+
cc_configure = use_extension("@rules_cc//cc:extensions.bzl", "cc_configure_extension")
109+
use_repo(cc_configure, "local_config_cc")
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
diff -ruN protobuf-33.4-original/BUILD.bazel protobuf-33.4/BUILD.bazel
2+
--- protobuf-33.4-original/BUILD.bazel 2026-01-29 11:30:30.665060667 +0000
3+
+++ protobuf-33.4/BUILD.bazel 2026-01-29 11:31:57.567124281 +0000
4+
@@ -9,6 +9,7 @@
5+
load("//bazel/toolchains:proto_lang_toolchain.bzl", "proto_lang_toolchain")
6+
load("//build_defs:cpp_opts.bzl", "COPTS", "LINK_OPTS")
7+
load(":protobuf.bzl", "internal_objc_proto_library", "internal_php_proto_library", "internal_py_proto_library")
8+
+load("@bazel_skylib//rules:common_settings.bzl", "label_flag")
9+
10+
licenses(["notice"])
11+
12+
@@ -28,6 +29,12 @@
13+
visibility = ["//cmake:__pkg__"],
14+
)
15+
16+
+label_flag(
17+
+ name = "zlib",
18+
+ build_setting_default = "@zlib",
19+
+ visibility = ["//visibility:public"],
20+
+)
21+
+
22+
################################################################################
23+
# Well Known Types Proto Library Rules
24+
#
25+
@@ -354,13 +361,83 @@
26+
)
27+
28+
cc_binary(
29+
- name = "protoc",
30+
+ name = "compiled_protoc",
31+
copts = COPTS,
32+
linkopts = LINK_OPTS,
33+
visibility = ["//visibility:public"],
34+
deps = ["//src/google/protobuf/compiler:protoc_lib_stage1"],
35+
)
36+
37+
+# Lifted from `rules_proto`
38+
+config_setting(
39+
+ name = "linux-aarch_64",
40+
+ constraint_values = [
41+
+ "@platforms//os:linux",
42+
+ "@platforms//cpu:aarch64",
43+
+ ],
44+
+)
45+
+
46+
+config_setting(
47+
+ name = "linux-x86_64",
48+
+ constraint_values = [
49+
+ "@platforms//os:linux",
50+
+ "@platforms//cpu:x86_64",
51+
+ ],
52+
+)
53+
+
54+
+config_setting(
55+
+ name = "linux-ppcle_64",
56+
+ constraint_values = [
57+
+ "@platforms//os:linux",
58+
+ "@platforms//cpu:ppc64le",
59+
+ ],
60+
+)
61+
+
62+
+config_setting(
63+
+ name = "osx-aarch_64",
64+
+ constraint_values = [
65+
+ "@platforms//os:osx",
66+
+ "@platforms//cpu:aarch64",
67+
+ ],
68+
+)
69+
+
70+
+config_setting(
71+
+ name = "osx-x86_64",
72+
+ constraint_values = [
73+
+ "@platforms//os:osx",
74+
+ "@platforms//cpu:x86_64",
75+
+ ],
76+
+)
77+
+
78+
+config_setting(
79+
+ name = "win64",
80+
+ constraint_values = [
81+
+ "@platforms//os:windows",
82+
+ "@platforms//cpu:x86_64",
83+
+ ],
84+
+)
85+
+
86+
+# Use precompiled binaries where possible.
87+
+alias(
88+
+ name = "protoc",
89+
+ actual = select({
90+
+ ":linux-aarch_64": "@prebuilt_protoc.linux_aarch_64//:protoc",
91+
+ ":linux-x86_64": "@prebuilt_protoc.linux_x86_64//:protoc",
92+
+ ":linux-ppcle_64": "@prebuilt_protoc.linux_ppcle_64//:protoc",
93+
+ ":osx-aarch_64": "@prebuilt_protoc.osx_aarch_64//:protoc",
94+
+ ":osx-x86_64": "@prebuilt_protoc.osx_x86_64//:protoc",
95+
+ ":win64": "@prebuilt_protoc.win64//:protoc",
96+
+ "//conditions:default": ":compiled_protoc",
97+
+ }),
98+
+ visibility = ["//visibility:public"],
99+
+)
100+
+
101+
+alias(
102+
+ name = "protobuf_python_genproto",
103+
+ actual = "//python:well_known_types_py_pb2_genproto",
104+
+ visibility = ["//visibility:public"],
105+
+)
106+
+
107+
cc_binary(
108+
name = "protoc_stage0",
109+
copts = COPTS,
110+
diff -ruN protobuf-33.4-original/build_defs/cpp_opts.bzl protobuf-33.4/build_defs/cpp_opts.bzl
111+
--- protobuf-33.4-original/build_defs/cpp_opts.bzl 2026-01-29 11:30:30.668060668 +0000
112+
+++ protobuf-33.4/build_defs/cpp_opts.bzl 2026-01-29 11:31:57.570124282 +0000
113+
@@ -18,6 +18,7 @@
114+
],
115+
"//conditions:default": [
116+
"-Wno-sign-compare",
117+
+ "-Wno-deprecated-declarations",
118+
],
119+
})
120+
121+
diff -ruN protobuf-33.4-original/src/google/protobuf/io/BUILD.bazel protobuf-33.4/src/google/protobuf/io/BUILD.bazel
122+
--- protobuf-33.4-original/src/google/protobuf/io/BUILD.bazel 2026-01-29 11:30:30.785060721 +0000
123+
+++ protobuf-33.4/src/google/protobuf/io/BUILD.bazel 2026-01-29 11:31:57.572124283 +0000
124+
@@ -160,7 +160,7 @@
125+
"@abseil-cpp//absl/log:absl_log",
126+
] + select({
127+
"//build_defs:config_msvc": [],
128+
- "//conditions:default": ["@zlib"],
129+
+ "//conditions:default": ["//:zlib"],
130+
}),
131+
)
132+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"integrity": "sha256-aH6YpHGXO1xf1xF1DEC4uCwK3jP2Sdtl4AspDyk0Wis=",
3+
"strip_prefix": "protobuf-33.4",
4+
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v33.4/protobuf-33.4.bazel.tar.gz",
5+
"patches": {
6+
"patches/envoy.patch": "sha256-7ecbd00a9515bf835fb99d1e64cacfebc555bf0caed89b2abef643823d5c09f7"
7+
},
8+
"patch_strip": 1
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"homepage": "https://github.com/protocolbuffers/protobuf",
3+
"maintainers": [],
4+
"repository": [
5+
"github:protocolbuffers/protobuf"
6+
],
7+
"versions": [
8+
"33.4.envoy"
9+
],
10+
"yanked_versions": {}
11+
}

0 commit comments

Comments
 (0)