@@ -42,9 +42,41 @@ def rules_jvm_external_deps(
4242 http_archive ,
4343 name = "rules_java" ,
4444 urls = [
45- "https://github.com/bazelbuild/rules_java/releases/download/7.11.1 /rules_java-7.11.1 .tar.gz" ,
45+ "https://github.com/bazelbuild/rules_java/releases/download/7.12.2 /rules_java-7.12.2 .tar.gz" ,
4646 ],
47- integrity = "sha256-bzzg6fupeahE+rotYEZ4Q/v1GR2Mph+j0uoXZVtWu4w=" ,
47+ sha256 = "a9690bc00c538246880d5c83c233e4deb83fe885f54c21bb445eb8116a180b83" ,
48+ )
49+
50+ if major_version == "6" :
51+ # Here goes the chain of rules compatibility resolution between RJE, java, android, cc and protobuf:
52+ #
53+ # rules_jvm_external wants to support LTS-2. For Bazel 8, this means supporting Bazel 6.
54+ #
55+ # rules_android is decoupled from Bazel 8, including its providers. ProguardSpecInfo is also decoupled, but to rules_java 7.12.2.
56+ #
57+ # So rules_java 7.12.2 is necessary for a decoupled rules_android to work with Bazel 6.
58+ #
59+ # But with workspace + rules_java 7.12.2, rules_java brings in a dep on
60+ # rules_cc's //cc package via //java/bazel/rules:rules (for CcInfo).
61+ # https://github.com/bazelbuild/rules_java/blob/2a9bd746974f6c94b159821d75130ad43e6b2970/java/bazel/rules/BUILD.bazel#L34-L35
62+ #
63+ # and rules_cc, in turn, brings in a dep on protobuf.
64+ #
65+ # And that's why we need the following deps:
66+ maybe (
67+ http_archive ,
68+ name = "rules_cc" ,
69+ urls = ["https://github.com/bazelbuild/rules_cc/archive/faeafdb82814b4f7295c555781e800f080607bdd.tar.gz" ],
70+ sha256 = "ca772d4fa149180dd1d81fe19a61c911dcebf9768d56209fc5bf382125ade0b6" ,
71+ strip_prefix = "rules_cc-faeafdb82814b4f7295c555781e800f080607bdd" ,
72+ )
73+
74+ maybe (
75+ http_archive ,
76+ name = "protobuf" ,
77+ sha256 = "da288bf1daa6c04d03a9051781caa52aceb9163586bff9aa6cfb12f69b9395aa" ,
78+ strip_prefix = "protobuf-27.0" ,
79+ url = "https://github.com/protocolbuffers/protobuf/releases/download/v27.0/protobuf-27.0.tar.gz" ,
4880 )
4981
5082 maybe (
0 commit comments