Added bzlmod support to all extension rules. (#3037)
Additional Changes:
- The rules `rules_nodejs` for `rules_rust_wasm_bindgen` will no longer
tested and will be dropped unless bzlmod support is added for the
original `bazel_build_rules_nodejs` rules.
- `rules_rust_bindgen` updated default clang version to 17.0.3 to match
bzlmod available version.
- `rules_rust_prost` updated protobuf version to `v28.3`
Relates to:
- https://github.com/bazelbuild/rules_rust/issues/2181
diff --git a/extensions/prost/.bazelignore b/extensions/prost/.bazelignore
index 8c29e7d..68062bd 100644
--- a/extensions/prost/.bazelignore
+++ b/extensions/prost/.bazelignore
@@ -1,5 +1,5 @@
examples
bazel-out
bazel-testlogs
-bazel-extensions
+bazel-prost
bazel-bin
diff --git a/extensions/prost/.bazelrc b/extensions/prost/.bazelrc
index 6b20ca4..f3e5a5d 100644
--- a/extensions/prost/.bazelrc
+++ b/extensions/prost/.bazelrc
@@ -60,9 +60,8 @@
## Bzlmod
###############################################################################
-# TODO: migrate all dependencies from WORKSPACE to MODULE.bazel
-# https://github.com/bazelbuild/rules_rust/issues/2181
-common --noenable_bzlmod --enable_workspace
+# A configuration for disabling bzlmod.
+common:no-bzlmod --noenable_bzlmod --enable_workspace
# Disable the bzlmod lockfile, so we don't accidentally commit MODULE.bazel.lock
common --lockfile_mode=off
diff --git a/extensions/prost/MODULE.bazel b/extensions/prost/MODULE.bazel
index fa1842e..7b59f68 100644
--- a/extensions/prost/MODULE.bazel
+++ b/extensions/prost/MODULE.bazel
@@ -16,11 +16,11 @@
bazel_dep(
name = "bazel_skylib",
- version = "1.5.0",
+ version = "1.7.1",
)
bazel_dep(
name = "rules_cc",
- version = "0.0.9",
+ version = "0.0.17",
)
bazel_dep(
name = "rules_proto",
@@ -28,13 +28,13 @@
)
bazel_dep(
name = "protobuf",
- version = "21.7",
+ version = "28.3",
repo_name = "com_google_protobuf",
)
-rust_ext_prost = use_extension("//:extensions.bzl", "rust_ext_prost")
+rust_ext = use_extension("//:extensions.bzl", "rust_ext")
use_repo(
- rust_ext_prost,
+ rust_ext,
"rules_rust_prost_deps",
"rules_rust_prost_deps__h2-0.4.6",
"rules_rust_prost_deps__heck",
@@ -50,3 +50,25 @@
register_toolchains(
"//:default_prost_toolchain",
)
+
+bazel_dep(
+ name = "googleapis",
+ version = "0.0.0-20240819-fe8ba054a",
+ dev_dependency = True,
+ repo_name = "com_google_googleapis",
+)
+bazel_dep(
+ name = "bazel_ci_rules",
+ version = "1.0.0",
+ dev_dependency = True,
+)
+
+rust_ext_dev = use_extension(
+ "//private:internal_extensions.bzl",
+ "rust_ext_dev",
+ dev_dependency = True,
+)
+use_repo(
+ rust_ext_dev,
+ "buildkite_config",
+)
diff --git a/extensions/prost/WORKSPACE.bazel b/extensions/prost/WORKSPACE.bazel
index 7b6296a..f59107e 100644
--- a/extensions/prost/WORKSPACE.bazel
+++ b/extensions/prost/WORKSPACE.bazel
@@ -33,6 +33,11 @@
rust_prost_transitive_repositories()
+# Needed by protobuf
+load("@rules_python//python:repositories.bzl", "py_repositories")
+
+py_repositories()
+
# buildifier: disable=bzl-visibility
load("//private/tests:deps.bzl", "prost_test_deps")
diff --git a/extensions/prost/extensions.bzl b/extensions/prost/extensions.bzl
index 1fc8e4b..f3b9569 100644
--- a/extensions/prost/extensions.bzl
+++ b/extensions/prost/extensions.bzl
@@ -2,7 +2,7 @@
load("//:repositories.bzl", "rust_prost_dependencies")
-def _rust_ext_prost_impl(module_ctx):
+def _rust_ext_impl(module_ctx):
# This should contain the subset of WORKSPACE.bazel that defines
# repositories.
direct_deps = []
@@ -17,7 +17,7 @@
root_module_direct_dev_deps = [],
)
-rust_ext_prost = module_extension(
- doc = "Dependencies for rules_rust extensions.",
- implementation = _rust_ext_prost_impl,
+rust_ext = module_extension(
+ doc = "Dependencies for the rules_rust prost extension.",
+ implementation = _rust_ext_impl,
)
diff --git a/extensions/prost/private/internal_extensions.bzl b/extensions/prost/private/internal_extensions.bzl
new file mode 100644
index 0000000..3b76d5e
--- /dev/null
+++ b/extensions/prost/private/internal_extensions.bzl
@@ -0,0 +1,26 @@
+"""Bzlmod internal extensions"""
+
+load("@bazel_ci_rules//:rbe_repo.bzl", "rbe_preconfig")
+
+def _rust_ext_dev_impl(module_ctx):
+ deps = []
+
+ rbe_preconfig(
+ name = "buildkite_config",
+ toolchain = "ubuntu1804-bazel-java11",
+ )
+
+ deps.append(struct(repo = "buildkite_config"))
+
+ # is_dev_dep is ignored here. It's not relevant for internal_deps, as dev
+ # dependencies are only relevant for module extensions that can be used
+ # by other MODULES.
+ return module_ctx.extension_metadata(
+ root_module_direct_deps = [],
+ root_module_direct_dev_deps = [repo.repo for repo in deps],
+ )
+
+rust_ext_dev = module_extension(
+ doc = "Development dependencies for the rules_rust_prost extension.",
+ implementation = _rust_ext_dev_impl,
+)
diff --git a/extensions/prost/private/tests/well_known_types/well_known_types_test.rs b/extensions/prost/private/tests/well_known_types/well_known_types_test.rs
index f74796e..eb985dc 100644
--- a/extensions/prost/private/tests/well_known_types/well_known_types_test.rs
+++ b/extensions/prost/private/tests/well_known_types/well_known_types_test.rs
@@ -2,11 +2,11 @@
use well_known_types_proto::any_proto::google::protobuf::Any;
use well_known_types_proto::api_proto::google::protobuf::{Api, Method, Mixin};
-use well_known_types_proto::compiler_plugin_proto::google::protobuf::compiler::Version;
use well_known_types_proto::descriptor_proto::google::protobuf::DescriptorProto;
use well_known_types_proto::duration_proto::google::protobuf::Duration;
use well_known_types_proto::empty_proto::google::protobuf::Empty;
use well_known_types_proto::field_mask_proto::google::protobuf::FieldMask;
+use well_known_types_proto::plugin_proto::google::protobuf::compiler::Version;
use well_known_types_proto::source_context_proto::google::protobuf::SourceContext;
use well_known_types_proto::struct_proto::google::protobuf::Struct;
use well_known_types_proto::struct_proto::google::protobuf::Value;
diff --git a/extensions/prost/repositories.bzl b/extensions/prost/repositories.bzl
index 27a0772..5718092 100644
--- a/extensions/prost/repositories.bzl
+++ b/extensions/prost/repositories.bzl
@@ -36,9 +36,9 @@
maybe(
http_archive,
name = "com_google_protobuf",
- sha256 = "52b6160ae9266630adb5e96a9fc645215336371a740e87d411bfb63ea2f268a0",
- strip_prefix = "protobuf-3.18.0",
- urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v3.18.0/protobuf-all-3.18.0.tar.gz"],
+ integrity = "sha256-fD69eq7dhvpdxHmg/agD9gLKr3jYr/fOg7ieG4rnRCo=",
+ strip_prefix = "protobuf-28.3",
+ urls = ["https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protobuf-28.3.tar.gz"],
)
maybe(
http_archive,
diff --git a/extensions/prost/transitive_repositories.bzl b/extensions/prost/transitive_repositories.bzl
index 60c99ed..277fd41 100644
--- a/extensions/prost/transitive_repositories.bzl
+++ b/extensions/prost/transitive_repositories.bzl
@@ -1,6 +1,7 @@
"""Definitions for loading transitive `@rules_rust//proto` dependencies"""
load("@bazel_features//:deps.bzl", "bazel_features_deps")
+load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies")
def rust_prost_transitive_repositories():
@@ -11,3 +12,5 @@
rules_proto_dependencies()
bazel_features_deps()
+
+ protobuf_deps()