Skip to content

Commit e962852

Browse files
authored
Fix grpc-proto and bazel_jar_jar for Bazel 9 (#6856)
Upstream PRs: - grpc/grpc-proto#172 - bazeltools/bazel_jar_jar#70
1 parent e42de35 commit e962852

File tree

10 files changed

+343
-4
lines changed

10 files changed

+343
-4
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module(
2+
name = "bazel_jar_jar",
3+
version = "0.1.11.bcr.1",
4+
)
5+
6+
bazel_dep(name = "platforms", version = "0.0.11")
7+
bazel_dep(name = "rules_java", version = "8.15.1")
8+
bazel_dep(name = "rules_shell", version = "0.6.1")
9+
10+
non_module_deps = use_extension("//internal:non_module_deps.bzl", "non_module_deps")
11+
use_repo(
12+
non_module_deps,
13+
"jvm__jarjar_abrams_assembly",
14+
"jvm__com_twitter__scalding_args",
15+
)
Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
commit 15e6efd2de5c8acc13b8da039204c0920a322cfd
2+
Author: Yun Peng <pcloudy@google.com>
3+
Date: Wed Dec 10 12:29:51 2025 +0000
4+
5+
Fix build with Bazel 9
6+
7+
diff --git a/MODULE.bazel b/MODULE.bazel
8+
index 4231d3e..834550b 100644
9+
--- a/MODULE.bazel
10+
+++ b/MODULE.bazel
11+
@@ -10,6 +10,6 @@ bazel_dep(name = "rules_shell", version = "0.6.1")
12+
non_module_deps = use_extension("//internal:non_module_deps.bzl", "non_module_deps")
13+
use_repo(
14+
non_module_deps,
15+
- "jvm__jarjar_abrams_assembly",
16+
"jvm__com_twitter__scalding_args",
17+
+ "jvm__jarjar_abrams_assembly",
18+
)
19+
diff --git a/internal/jar_jar.bzl b/internal/jar_jar.bzl
20+
index f06101f..18ff29e 100644
21+
--- a/internal/jar_jar.bzl
22+
+++ b/internal/jar_jar.bzl
23+
@@ -1,5 +1,6 @@
24+
load("@bazel_tools//tools/jdk:toolchain_utils.bzl", "find_java_toolchain")
25+
load("@rules_java//java/common:java_common.bzl", "java_common")
26+
+load("@rules_java//java/common:java_info.bzl", "JavaInfo")
27+
28+
def _jar_jar_impl(ctx):
29+
rule_file = ctx.file.rules
30+
@@ -11,12 +12,12 @@ def _jar_jar_impl(ctx):
31+
rule_file = ctx.actions.declare_file("jar_jar-rules-" + ctx.label.name + ".tmp")
32+
ctx.actions.write(
33+
output = rule_file,
34+
- content = "\n".join(ctx.attr.inline_rules)
35+
+ content = "\n".join(ctx.attr.inline_rules),
36+
)
37+
38+
args = ctx.actions.args()
39+
if ctx.attr.jvm_flags:
40+
- args.add_joined(ctx.attr.jvm_flags, join_with=" ", format_joined="--jvm_flags=%s")
41+
+ args.add_joined(ctx.attr.jvm_flags, join_with = " ", format_joined = "--jvm_flags=%s")
42+
args.add("process")
43+
args.add(rule_file)
44+
args.add(ctx.file.input_jar)
45+
@@ -52,7 +53,7 @@ jar_jar = rule(
46+
"output_jar": attr.output(mandatory = True),
47+
"input_jar": attr.label(allow_single_file = True),
48+
"rules": attr.label(allow_single_file = True),
49+
- "inline_rules" : attr.string_list(),
50+
+ "inline_rules": attr.string_list(),
51+
"jvm_flags": attr.string_list(),
52+
"_jarjar_runner": attr.label(executable = True, cfg = "exec", default = "//src/main/java/com/github/johnynek/jarjar:app"),
53+
"_java_toolchain": attr.label(
54+
diff --git a/jar_jar_aspect.bzl b/jar_jar_aspect.bzl
55+
index abb10d0..5849d4e 100644
56+
--- a/jar_jar_aspect.bzl
57+
+++ b/jar_jar_aspect.bzl
58+
@@ -1,3 +1,6 @@
59+
+load("@rules_java//java/common:java_common.bzl", "java_common")
60+
+load("@rules_java//java/common:java_info.bzl", "JavaInfo")
61+
+
62+
# This is the provider we pass up along to the outer thin_jar_jar rule.
63+
ShadedJars = provider(fields = [
64+
"java_info",
65+
@@ -8,8 +11,8 @@ ShadedJars = provider(fields = [
66+
67+
ExtraDependencyInfo = provider(
68+
fields = {
69+
- "extra_java_deps": "Depset[JavaInfo] with extra java dependencies to include in the list of jars to be shaded"
70+
- }
71+
+ "extra_java_deps": "Depset[JavaInfo] with extra java dependencies to include in the list of jars to be shaded",
72+
+ },
73+
)
74+
75+
def merge_shaded_jars_info(shaded_jars):
76+
@@ -83,7 +86,7 @@ def _jar_jar_aspect_impl(target, ctx):
77+
if len(current_jars) == 0:
78+
current_jars = [_build_nosrc_jar(ctx)]
79+
80+
- transitive_shaded=[]
81+
+ transitive_shaded = []
82+
if hasattr(ctx.rule.attr, "runtime_deps"):
83+
for d in ctx.rule.attr.runtime_deps:
84+
if ShadedJars in d:
85+
@@ -101,7 +104,6 @@ def _jar_jar_aspect_impl(target, ctx):
86+
transitive_shaded.append(shaded_jars.transitive_shaded)
87+
java_info_exports.append(shaded_jars.java_info)
88+
89+
-
90+
java_info_deps = []
91+
for d in ctx.rule.attr.deps:
92+
if ShadedJars in d:
93+
@@ -127,7 +129,7 @@ def _jar_jar_aspect_impl(target, ctx):
94+
)
95+
flags = []
96+
if duplicate_to_warn:
97+
- flags.append("-DduplicateClassToWarn={duplicate_to_warn}".format(duplicate_to_warn=duplicate_to_warn))
98+
+ flags.append("-DduplicateClassToWarn={duplicate_to_warn}".format(duplicate_to_warn = duplicate_to_warn))
99+
100+
args = ctx.actions.args()
101+
for flag in flags:
102+
@@ -149,7 +151,7 @@ def _jar_jar_aspect_impl(target, ctx):
103+
java_info = java_common.make_non_strict(java_common.merge(java_outputs)),
104+
output_files = depset(output_files),
105+
tags = ctx.rule.attr.tags or [],
106+
- transitive_shaded = depset(transitive=transitive_shaded)
107+
+ transitive_shaded = depset(transitive = transitive_shaded),
108+
),
109+
]
110+
111+
@@ -159,9 +161,7 @@ jar_jar_aspect = aspect(
112+
required_aspect_providers = [
113+
[JavaInfo],
114+
[ShadedJars],
115+
- # Allows this to pass through java proto libraries
116+
- ['proto_java'],
117+
- []
118+
+ [],
119+
],
120+
attrs = {
121+
"_java_toolchain": attr.label(
122+
@@ -172,9 +172,8 @@ jar_jar_aspect = aspect(
123+
cfg = "exec",
124+
default = Label("@bazel_tools//tools/zip:zipper"),
125+
allow_files = True,
126+
- )
127+
+ ),
128+
},
129+
-
130+
toolchains = [
131+
"//toolchains:toolchain_type",
132+
],
133+
diff --git a/jar_jar_toolchain.bzl b/jar_jar_toolchain.bzl
134+
index 92826af..0e3eff2 100644
135+
--- a/jar_jar_toolchain.bzl
136+
+++ b/jar_jar_toolchain.bzl
137+
@@ -13,6 +13,6 @@ jar_jar_toolchain = rule(
138+
"rules": attr.label(allow_single_file = True),
139+
"duplicate_class_to_warn": attr.bool(mandatory = False, default = False),
140+
"jar_jar_runner": attr.label(executable = True, cfg = "exec", default = "//src/main/java/com/github/johnynek/jarjar:app"),
141+
- "jar_jar_is_native_image": attr.bool(default = False)
142+
+ "jar_jar_is_native_image": attr.bool(default = False),
143+
},
144+
)
145+
diff --git a/src/main/java/com/github/johnynek/jarjar/BUILD.bazel b/src/main/java/com/github/johnynek/jarjar/BUILD.bazel
146+
index 7573b20..200ea8b 100644
147+
--- a/src/main/java/com/github/johnynek/jarjar/BUILD.bazel
148+
+++ b/src/main/java/com/github/johnynek/jarjar/BUILD.bazel
149+
@@ -2,8 +2,8 @@ load("@rules_java//java:defs.bzl", "java_binary")
150+
151+
java_binary(
152+
name = "app",
153+
- main_class = "com.github.johnynek.jarjar.Main",
154+
srcs = ["Main.java"],
155+
+ main_class = "com.github.johnynek.jarjar.Main",
156+
visibility = ["//visibility:public"],
157+
deps = ["@jvm__jarjar_abrams_assembly//jar"],
158+
)
159+
diff --git a/src/test/bazel/BUILD.bazel b/src/test/bazel/BUILD.bazel
160+
index 6f5a9b6..4c2767c 100644
161+
--- a/src/test/bazel/BUILD.bazel
162+
+++ b/src/test/bazel/BUILD.bazel
163+
@@ -7,8 +7,8 @@ load(
164+
jar_jar(
165+
name = "scalding_args__shaded",
166+
input_jar = "@jvm__com_twitter__scalding_args//jar",
167+
- rules = "shade_rule",
168+
output_jar = "scalding_args__shaded.jar",
169+
+ rules = "shade_rule",
170+
)
171+
172+
sh_test(
173+
diff --git a/test/jar_jar/example/BUILD b/test/jar_jar/example/BUILD
174+
index e12c07b..7f468dc 100644
175+
--- a/test/jar_jar/example/BUILD
176+
+++ b/test/jar_jar/example/BUILD
177+
@@ -2,6 +2,8 @@ load(
178+
"@com_github_johnynek_bazel_jar_jar//:jar_jar.bzl",
179+
"jar_jar",
180+
)
181+
+load("@rules_java//java:java_import.bzl", "java_import")
182+
+load("@rules_java//java:java_library.bzl", "java_library")
183+
184+
alias(
185+
name = "file_output",
186+
@@ -16,18 +18,18 @@ alias(
187+
jar_jar(
188+
name = "shaded_args_custom_out",
189+
input_jar = "@com_twitter_scalding_args",
190+
- rules = "shade_rule",
191+
output_jar = "custom_name.jar",
192+
+ rules = "shade_rule",
193+
)
194+
195+
jar_jar(
196+
name = "shaded_args",
197+
input_jar = "@com_twitter_scalding_args",
198+
- rules = "shade_rule",
199+
jvm_flags = [
200+
- "-Xmx2g",
201+
+ "-Xmx2g",
202+
"-Xms256m",
203+
- ]
204+
+ ],
205+
+ rules = "shade_rule",
206+
)
207+
208+
java_import(
209+
diff --git a/test/jar_jar/inline_example/BUILD b/test/jar_jar/inline_example/BUILD
210+
index 85ad918..c9fc661 100644
211+
--- a/test/jar_jar/inline_example/BUILD
212+
+++ b/test/jar_jar/inline_example/BUILD
213+
@@ -2,11 +2,13 @@ load(
214+
"@com_github_johnynek_bazel_jar_jar//:jar_jar.bzl",
215+
"jar_jar",
216+
)
217+
+load("@rules_java//java:java_import.bzl", "java_import")
218+
+load("@rules_java//java:java_library.bzl", "java_library")
219+
220+
jar_jar(
221+
name = "shaded_args",
222+
- input_jar = "@com_twitter_scalding_args",
223+
inline_rules = ["rule com.twitter.scalding.** foo.@1"],
224+
+ input_jar = "@com_twitter_scalding_args",
225+
)
226+
227+
java_import(
228+
diff --git a/test/jar_jar_aspect/example/BUILD b/test/jar_jar_aspect/example/BUILD
229+
index 367344b..50649e4 100644
230+
--- a/test/jar_jar_aspect/example/BUILD
231+
+++ b/test/jar_jar_aspect/example/BUILD
232+
@@ -2,6 +2,7 @@ load(
233+
"@com_github_johnynek_bazel_jar_jar//:thin_jar_jar.bzl",
234+
"thin_jar_jar",
235+
)
236+
+load("@rules_java//java:java_library.bzl", "java_library")
237+
238+
java_library(
239+
name = "using_unshaded",
240+
diff --git a/thin_jar_jar.bzl b/thin_jar_jar.bzl
241+
index 573e2f8..f6b9de8 100644
242+
--- a/thin_jar_jar.bzl
243+
+++ b/thin_jar_jar.bzl
244+
@@ -1,3 +1,4 @@
245+
+load("@rules_java//java/common:java_info.bzl", "JavaInfo")
246+
load("//:jar_jar_aspect.bzl", "ShadedJars", "jar_jar_aspect", "merge_shaded_jars_info")
247+
248+
def _thin_jar_jar_impl(ctx):
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
bcr_test_module:
2+
module_path: test
3+
matrix:
4+
platform:
5+
- debian10
6+
- ubuntu2004
7+
- macos
8+
- macos_arm64
9+
- windows
10+
bazel: [8.x]
11+
tasks:
12+
run_test_module:
13+
name: Run test module
14+
platform: ${{ platform }}
15+
bazel: ${{ bazel }}
16+
build_targets:
17+
- //...
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"integrity": "sha256-en0cjN0TmGTFWxoJp2+SxP3S3gtcz9YTdCMAbiz7LtE=",
3+
"strip_prefix": "bazel_jar_jar-0.1.11",
4+
"url": "https://github.com/bazeltools/bazel_jar_jar/releases/download/v0.1.11/bazel_jar_jar-v0.1.11.tar.gz",
5+
"patches": {
6+
"bazel9_fixes.patch": "sha256-TkpP1thlgetCj5eEXdOUqZ3dIJnw4uzKAjtP3R6Yg9A="
7+
},
8+
"patch_strip": 1
9+
}

modules/bazel_jar_jar/metadata.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
{
55
"email": "eed3si9n@gmail.com",
66
"github": "eed3si9n",
7-
"name": "Eugene Yokota",
8-
"github_user_id": 184683
7+
"github_user_id": 184683,
8+
"name": "Eugene Yokota"
99
}
1010
],
1111
"repository": [
@@ -16,7 +16,8 @@
1616
"0.1.5",
1717
"0.1.7",
1818
"0.1.10",
19-
"0.1.11"
19+
"0.1.11",
20+
"0.1.11.bcr.1"
2021
],
2122
"yanked_versions": {}
2223
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module(
2+
name = "grpc-proto",
3+
version = "0.0.0-20240627-ec30f58.bcr.1",
4+
repo_name = "io_grpc_grpc_proto",
5+
)
6+
7+
bazel_dep(name = "googleapis", version = "0.0.0-20240326-1c8d509c5", repo_name = "com_google_googleapis")
8+
bazel_dep(name = "rules_proto", version = "4.0.0")
9+
bazel_dep(name = "protobuf", version = "29.0", repo_name = "com_google_protobuf")
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
diff --git a/BUILD.bazel b/BUILD.bazel
2+
index 50d94ee..85123e1 100644
3+
--- a/BUILD.bazel
4+
+++ b/BUILD.bazel
5+
@@ -12,6 +12,7 @@
6+
# See the License for the specific language governing permissions and
7+
# limitations under the License.
8+
9+
+load("@com_google_protobuf//bazel:java_proto_library.bzl", "java_proto_library")
10+
load("@rules_proto//proto:defs.bzl", "proto_library")
11+
12+
package(default_visibility = [
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
matrix:
2+
platform:
3+
- debian10
4+
- ubuntu2004
5+
- macos
6+
- macos_arm64
7+
- windows
8+
bazel:
9+
- 7.x
10+
- 8.x
11+
- 9.*
12+
tasks:
13+
verify_targets:
14+
name: Verify build targets
15+
platform: ${{ platform }}
16+
bazel: ${{ bazel }}
17+
build_targets:
18+
- '@grpc-proto//...'
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"url": "https://github.com/grpc/grpc-proto/archive/ec30f589e2519d595688b9a42f88a91bdd6b733f.tar.gz",
3+
"integrity": "sha256-XptSCyKvvVOmYswpAXBkviU8Hfpt+JWHOFlOf+xq3jM=",
4+
"strip_prefix": "grpc-proto-ec30f589e2519d595688b9a42f88a91bdd6b733f",
5+
"patch_strip": 1,
6+
"patches": {
7+
"bazel9_fixes.patch": "sha256-R41dScu0O6bGAAB+KmkR6B8zqZRmGPjg14rtVmFsfkM="
8+
}
9+
}

modules/grpc-proto/metadata.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"github:grpc/grpc-proto"
1111
],
1212
"versions": [
13-
"0.0.0-20240627-ec30f58"
13+
"0.0.0-20240627-ec30f58",
14+
"0.0.0-20240627-ec30f58.bcr.1"
1415
],
1516
"yanked_versions": {}
1617
}

0 commit comments

Comments
 (0)