Use `@protobuf` instead of `@rules_proto` in `rules_java`

`rules_proto` is still kept as a dependency for `@remote_java_tools`

PiperOrigin-RevId: 682247564
Change-Id: I50535d2d23aa84cf62a2c7f9dec9fe1b360fcf2c
diff --git a/BUILD b/BUILD
index c138b7f..51b19f7 100644
--- a/BUILD
+++ b/BUILD
@@ -3,6 +3,7 @@
 exports_files([
     "LICENSE",
     "WORKSPACE",
+    "protobuf_29.0-rc1.patch",
 ])
 
 filegroup(
diff --git a/MODULE.bazel b/MODULE.bazel
index fa5b11d..8615179 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -9,6 +9,13 @@
 bazel_dep(name = "rules_cc", version = "0.0.10")
 bazel_dep(name = "bazel_features", version = "1.11.0")
 bazel_dep(name = "bazel_skylib", version = "1.6.1")
+bazel_dep(name = "protobuf", version = "29.0-rc1")
+single_version_override(
+    module_name = "protobuf",
+    patch_strip = 1,
+    patches = ["//:protobuf_29.0-rc1.patch"],
+    version = "29.0-rc1",
+)
 
 # Required by @remote_java_tools, which is loaded via module extension.
 bazel_dep(name = "rules_proto", version = "6.0.2")
@@ -92,9 +99,3 @@
 # Dev dependencies
 bazel_dep(name = "rules_pkg", version = "0.9.1", dev_dependency = True)
 bazel_dep(name = "stardoc", version = "0.7.1", dev_dependency = True)
-
-# Override rules_python version to deal with #161 and https://github.com/bazelbuild/bazel/issues/20458
-single_version_override(
-    module_name = "rules_python",
-    version = "0.24.0",
-)
diff --git a/java/bazel/rules/BUILD.bazel b/java/bazel/rules/BUILD.bazel
index b82b16c..1ffd8ef 100644
--- a/java/bazel/rules/BUILD.bazel
+++ b/java/bazel/rules/BUILD.bazel
@@ -30,7 +30,6 @@
         "@bazel_skylib//lib:paths",
         "@rules_cc//cc:find_cc_toolchain_bzl",
         "@rules_cc//cc/common",
-        "@rules_proto//proto:defs",
     ],
 )
 
diff --git a/java/common/rules/impl/BUILD b/java/common/rules/impl/BUILD
index f9c8626..89bfaf5 100644
--- a/java/common/rules/impl/BUILD
+++ b/java/common/rules/impl/BUILD
@@ -12,6 +12,9 @@
     name = "impl",
     srcs = glob(["*.bzl"]),
     visibility = ["//java:__subpackages__"],
+    deps = [
+        "@protobuf//bazel/common:proto_info_bzl",
+    ],
 )
 
 filegroup(
diff --git a/java/common/rules/impl/java_binary_impl.bzl b/java/common/rules/impl/java_binary_impl.bzl
index 98b388b..918aff0 100644
--- a/java/common/rules/impl/java_binary_impl.bzl
+++ b/java/common/rules/impl/java_binary_impl.bzl
@@ -14,9 +14,9 @@
 
 """ Implementation of java_binary for bazel """
 
+load("@protobuf//bazel/common:proto_info.bzl", "ProtoInfo")
 load("@rules_cc//cc/common:cc_common.bzl", "cc_common")
 load("@rules_cc//cc/common:cc_info.bzl", "CcInfo")
-load("@rules_proto//proto:defs.bzl", "ProtoInfo")
 load("//java/common:java_common.bzl", "java_common")
 load("//java/common:java_info.bzl", "JavaInfo")
 load("//java/common:java_semantics.bzl", "semantics")
diff --git a/protobuf_29.0-rc1.patch b/protobuf_29.0-rc1.patch
new file mode 100644
index 0000000..c033295
--- /dev/null
+++ b/protobuf_29.0-rc1.patch
@@ -0,0 +1,33 @@
+diff --git a/bazel/common/BUILD b/bazel/common/BUILD
+index c79d22280..9ab40ff05 100644
+--- a/bazel/common/BUILD
++++ b/bazel/common/BUILD
+@@ -22,7 +22,8 @@ bzl_library(
+     ],
+     visibility = ["//visibility:public"],
+     deps = [
+-        "//bazel/private:native_bzl",
++        "//bazel/private:proto_info_bzl",
++        "@proto_bazel_features//:features",
+     ],
+ )
+ 
+diff --git a/bazel/private/BUILD b/bazel/private/BUILD
+index 9b04c1f86..8e5207f3a 100644
+--- a/bazel/private/BUILD
++++ b/bazel/private/BUILD
+@@ -108,6 +108,14 @@ bzl_library(
+     ],
+ )
+ 
++bzl_library(
++    name = "proto_info_bzl",
++    srcs = [
++        "proto_info.bzl",
++    ],
++    visibility = ["//bazel:__subpackages__"],
++)
++
+ native_bool_flag(
+     name = "experimental_proto_descriptor_sets_include_source_info",
+     flag = "experimental_proto_descriptor_sets_include_source_info",