Skip to content

Commit

Permalink
Add proto_library_as macro
Browse files Browse the repository at this point in the history
* clean up the root BUILD file a bit
* provide context as to why we need that in a central place

CMK-20994

Change-Id: I8acd7513230165371e7b45af90a00bb9ab988ef9
  • Loading branch information
Synss committed Feb 7, 2025
1 parent 49fe23a commit 477eef4
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 26 deletions.
36 changes: 10 additions & 26 deletions BUILD
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@bazel_skylib//rules:write_file.bzl", "write_file")
load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile_commands")
load("@repo_license//:license.bzl", "REPO_LICENSE")
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@rules_uv//uv:pip.bzl", "pip_compile")
load("@rules_uv//uv:venv.bzl", "create_venv")
load("//bazel/rules:copy_to_directory.bzl", "copy_to_directory")
load("//bazel/rules:proto.bzl", "proto_library_as")

exports_files(
[
Expand Down Expand Up @@ -196,33 +195,17 @@ create_venv(
}),
)

copy_file(
name = "_cmc_config_proto",
src = "//non-free/packages/cmc-protocols/protocols:cmc_config/config.proto",
out = "cmc_proto/config.proto",
)

copy_file(
name = "_cmc_cycletime_proto",
src = "//non-free/packages/cmc-protocols/protocols:cmc_config/cycletime.proto",
out = "cmc_proto/cycletime.proto",
)

copy_file(
name = "_cmc_state_proto",
src = "//non-free/packages/cmc-protocols/protocols:cmc_config/state.proto",
out = "cmc_proto/state.proto",
)

proto_library(
proto_library_as(
name = "cycletime_proto",
srcs = ["cmc_proto/cycletime.proto"],
as_proto = "cmc_proto/cycletime.proto",
proto = "//non-free/packages/cmc-protocols/protocols:cmc_config/cycletime.proto",
visibility = ["//visibility:public"],
)

proto_library(
proto_library_as(
name = "config_proto",
srcs = ["cmc_proto/config.proto"],
as_proto = "cmc_proto/config.proto",
proto = "//non-free/packages/cmc-protocols/protocols:cmc_config/config.proto",
visibility = ["//visibility:public"],
deps = [
":cycletime_proto",
Expand All @@ -231,9 +214,10 @@ proto_library(
],
)

proto_library(
proto_library_as(
name = "state_proto",
srcs = ["cmc_proto/state.proto"],
as_proto = "cmc_proto/state.proto",
proto = "//non-free/packages/cmc-protocols/protocols:cmc_config/state.proto",
visibility = ["//visibility:public"],
deps = [
":cycletime_proto",
Expand Down
19 changes: 19 additions & 0 deletions bazel/rules/proto.bzl
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
load("@bazel_skylib//rules:copy_file.bzl", _copy_file = "copy_file")
load("@rules_proto//proto:defs.bzl", _proto_library = "proto_library")
load(
"@rules_proto_grpc//:defs.bzl",
"ProtoPluginInfo",
Expand All @@ -8,6 +10,23 @@ load(
load("@rules_python//python:defs.bzl", _py_library = "py_library")
load("@rules_python//python:proto.bzl", _py_proto_library = "py_proto_library")

def proto_library_as(name, proto, as_proto, **kwargs):
"""Macro to create a proto_library after moving the proto to a different path.
This avoids errors such as
"Error in fail: Cannot generate Python code for a .proto whose path contains '-'"
Args:
name: the name of the target.
proto: the proto file.
as_proto: new path to the proto file under the current directory.
**kwargs: arguments forwarded to the proto_library.
"""
name_cp = name + "_cp"
_copy_file(name = name_cp, src = proto, out = as_proto)
_proto_library(name = name, srcs = [as_proto], **kwargs)

py_proto_compile = rule(
implementation = proto_compile_impl,
attrs = dict(
Expand Down

0 comments on commit 477eef4

Please sign in to comment.