Skip to content

Commit

Permalink
Remove reference to cc_proto_aspect
Browse files Browse the repository at this point in the history
The symbol has been removed from Bazel 8, so any reference to it results in an error.

Using bazel_features, a bzl file with a reference is generated, based on Bazel version.

Protobuf 29.x doesn't have this problem because cc_proto_aspect wasn't exposed. But we should still cherry-pick exposing the aspect and this change to 29.x line, to make transition of rules_rust easier.

Closes: #19576
PiperOrigin-RevId: 715064854
  • Loading branch information
protobuf-github-bot authored and copybara-github committed Jan 13, 2025
1 parent 4a92a1c commit fa02f76
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 6 deletions.
2 changes: 1 addition & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ bazel_dep(name = "rules_python", version = "0.28.0")
bazel_dep(name = "rules_rust", version = "0.51.0")
bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "zlib", version = "1.3.1")
bazel_dep(name = "bazel_features", version = "1.17.0", repo_name = "proto_bazel_features")
bazel_dep(name = "bazel_features", version = "1.23.0", repo_name = "proto_bazel_features")
bazel_dep(
name = "rules_shell",
version = "0.2.0",
Expand Down
5 changes: 3 additions & 2 deletions bazel/private/cc_proto_aspect.bzl
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Exposes cc_proto_aspect to rules_rust"""

load("@proto_bazel_features//:features.bzl", "bazel_features")
load("//bazel/private:bazel_cc_proto_library.bzl", _cc_proto_aspect = "cc_proto_aspect") # buildifier: disable=bzl-visibility
load("//bazel/private:native.bzl", _native_cc_proto_aspect = "native_cc_proto_aspect") # buildifier: disable=bzl-visibility

cc_proto_aspect = _cc_proto_aspect if not hasattr(native, "cc_proto_library") else _native_cc_proto_aspect
# This resolves to Starlark cc_proto_aspect in Bazel 8 or with --incompatible_enable_autoload flag
cc_proto_aspect = getattr(bazel_features.globals, "cc_proto_aspect", None) or _cc_proto_aspect
2 changes: 0 additions & 2 deletions bazel/private/native.bzl
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
"""Renames toplevel symbols so they can be exported in Starlark under the same name"""

native_proto_common = proto_common_do_not_use

native_cc_proto_aspect = cc_proto_aspect
5 changes: 4 additions & 1 deletion bazel/private/proto_bazel_features.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ _PROTO_BAZEL_FEATURES = """bazel_features = struct(
),
globals = struct(
PackageSpecificationInfo = {PackageSpecificationInfo},
ProtoInfo = getattr(getattr(native, 'legacy_globals', None), 'ProtoInfo', {ProtoInfo})
ProtoInfo = getattr(getattr(native, 'legacy_globals', None), 'ProtoInfo', {ProtoInfo}),
cc_proto_aspect = getattr(getattr(native, 'legacy_globals', None), 'cc_proto_aspect', {cc_proto_aspect}),
),
)
"""
Expand All @@ -35,6 +36,7 @@ def _proto_bazel_features_impl(rctx):

protobuf_on_allowlist = major_version_int > 7
ProtoInfo = "ProtoInfo" if major_version_int < 8 else "None"
cc_proto_aspect = "cc_proto_aspect" if major_version_int < 8 else "None"

rctx.file("BUILD.bazel", """
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
Expand All @@ -50,6 +52,7 @@ exports_files(["features.bzl"])
PackageSpecificationInfo = "PackageSpecificationInfo" if PackageSpecificationInfo else "None",
protobuf_on_allowlist = repr(protobuf_on_allowlist),
ProtoInfo = ProtoInfo,
cc_proto_aspect = cc_proto_aspect,
))

proto_bazel_features = repository_rule(
Expand Down

0 comments on commit fa02f76

Please sign in to comment.