Skip to content

Commit 3e718f6

Browse files
Move Bazel workspace root and refactor BUILD files
- Moved Bazel workspace files (MODULE.bazel, WORKSPACE.bazel, .bazelrc, etc.) from `proto/` to the repository root. - Refactored `proto/BUILD.bazel` by splitting targets into colocated BUILD files in `proto/p4/config/v1/BUILD.bazel` and `proto/p4/v1/BUILD.bazel`. - Added `strip_import_prefix = "/proto"` to proto_library targets to maintain import compatibility. - Added aliases in `proto/BUILD.bazel` for backward compatibility. - Updated example projects to use the new canonical targets and workspace root. Fixes #571.
1 parent 5eae0eb commit 3e718f6

File tree

5 files changed

+151
-119
lines changed

5 files changed

+151
-119
lines changed

bazel/example/using-bzlmod/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cc_binary(
22
name = "hello_p4runtime",
33
srcs = ["hello_p4runtime.cc"],
44
deps = [
5-
"@com_github_p4lang_p4runtime//proto:p4info_cc_proto",
5+
"@com_github_p4lang_p4runtime//proto/p4/config/v1:p4info_cc_proto",
66
"@com_google_protobuf//:protobuf",
77
]
88
)

bazel/example/using-workspace/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cc_binary(
22
name = "hello_p4runtime",
33
srcs = ["hello_p4runtime.cc"],
44
deps = [
5-
"@com_github_p4lang_p4runtime//proto:p4info_cc_proto",
5+
"@com_github_p4lang_p4runtime//proto/p4/config/v1:p4info_cc_proto",
66
"@com_google_protobuf//:protobuf",
77
]
88
)

proto/BUILD.bazel

Lines changed: 23 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
21
load("@bazel_skylib//rules:build_test.bzl", "build_test")
3-
load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")
4-
load("@com_github_grpc_grpc//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library")
5-
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
62
load("@rules_license//rules:license.bzl", "license")
7-
load("@rules_proto//proto:defs.bzl", "proto_library")
83

94
package(
105
default_visibility = ["//visibility:public"],
@@ -19,125 +14,36 @@ license(
1914

2015
exports_files(["LICENSE"])
2116

22-
proto_library(
23-
name = "p4types_proto",
24-
srcs = ["p4/config/v1/p4types.proto"],
25-
strip_import_prefix = "/proto",
26-
)
17+
# Aliases for backward compatibility
18+
alias(name = "p4types_proto", actual = "//proto/p4/config/v1:p4types_proto")
19+
alias(name = "p4info_proto", actual = "//proto/p4/config/v1:p4info_proto")
20+
alias(name = "p4data_proto", actual = "//proto/p4/v1:p4data_proto")
21+
alias(name = "p4runtime_proto", actual = "//proto/p4/v1:p4runtime_proto")
2722

28-
proto_library(
29-
name = "p4data_proto",
30-
srcs = ["p4/v1/p4data.proto"],
31-
strip_import_prefix = "/proto",
32-
)
23+
alias(name = "p4types_cc_proto", actual = "//proto/p4/config/v1:p4types_cc_proto")
24+
alias(name = "p4info_cc_proto", actual = "//proto/p4/config/v1:p4info_cc_proto")
25+
alias(name = "p4data_cc_proto", actual = "//proto/p4/v1:p4data_cc_proto")
26+
alias(name = "p4runtime_cc_proto", actual = "//proto/p4/v1:p4runtime_cc_proto")
3327

34-
proto_library(
35-
name = "p4info_proto",
36-
srcs = ["p4/config/v1/p4info.proto"],
37-
deps = [
38-
":p4types_proto",
39-
"@com_google_protobuf//:any_proto",
40-
"@com_google_protobuf//:descriptor_proto",
41-
],
42-
strip_import_prefix = "/proto",
43-
)
28+
alias(name = "p4types_py_proto", actual = "//proto/p4/config/v1:p4types_py_proto")
29+
alias(name = "p4info_py_proto", actual = "//proto/p4/config/v1:p4info_py_proto")
30+
alias(name = "p4data_py_proto", actual = "//proto/p4/v1:p4data_py_proto")
31+
alias(name = "p4runtime_py_proto", actual = "//proto/p4/v1:p4runtime_py_proto")
4432

45-
proto_library(
46-
name = "p4runtime_proto",
47-
srcs = ["p4/v1/p4runtime.proto"],
48-
deps = [
49-
":p4data_proto",
50-
":p4info_proto",
51-
"@com_google_googleapis//google/rpc:status_proto",
52-
"@com_google_protobuf//:any_proto",
53-
],
54-
strip_import_prefix = "/proto",
55-
)
56-
57-
cc_proto_library(
58-
name = "p4types_cc_proto",
59-
deps = [":p4types_proto"],
60-
)
61-
62-
cc_proto_library(
63-
name = "p4info_cc_proto",
64-
deps = [":p4info_proto"],
65-
)
66-
67-
cc_proto_library(
68-
name = "p4data_cc_proto",
69-
deps = [":p4data_proto"],
70-
)
71-
72-
cc_proto_library(
73-
name = "p4runtime_cc_proto",
74-
deps = [":p4runtime_proto"],
75-
)
76-
77-
py_proto_library(
78-
name = "p4types_py_proto",
79-
deps = [":p4types_proto"],
80-
)
33+
alias(name = "p4info_go_proto", actual = "//proto/p4/config/v1:p4info_go_proto")
34+
alias(name = "p4runtime_go_proto", actual = "//proto/p4/v1:p4runtime_go_proto")
8135

82-
py_proto_library(
83-
name = "p4info_py_proto",
84-
deps = [":p4info_proto"],
85-
)
86-
87-
py_proto_library(
88-
name = "p4data_py_proto",
89-
deps = [":p4data_proto"],
90-
)
91-
92-
py_proto_library(
93-
name = "p4runtime_py_proto",
94-
deps = [":p4runtime_proto"],
95-
)
96-
97-
go_proto_library(
98-
name = "p4info_go_proto",
99-
importpath = "github.com/p4lang/p4runtime/go/p4/config/v1",
100-
protos = [
101-
":p4info_proto",
102-
":p4types_proto",
103-
],
104-
)
105-
106-
go_proto_library(
107-
name = "p4runtime_go_proto",
108-
importpath = "github.com/p4lang/p4runtime/go/p4/v1",
109-
protos = [
110-
":p4data_proto",
111-
":p4runtime_proto",
112-
],
113-
deps = [
114-
":p4info_go_proto",
115-
"@com_google_googleapis//google/rpc:status_go_proto",
116-
],
117-
)
118-
119-
cc_grpc_library(
120-
name = "p4runtime_cc_grpc",
121-
srcs = [":p4runtime_proto"],
122-
generate_mocks = True,
123-
grpc_only = True,
124-
deps = [":p4runtime_cc_proto"],
125-
)
126-
127-
py_grpc_library(
128-
name = "p4runtime_py_grpc",
129-
srcs = [":p4runtime_proto"],
130-
deps = [":p4runtime_py_proto"],
131-
)
36+
alias(name = "p4runtime_cc_grpc", actual = "//proto/p4/v1:p4runtime_cc_grpc")
37+
alias(name = "p4runtime_py_grpc", actual = "//proto/p4/v1:p4runtime_py_grpc")
13238

13339
build_test(
13440
name = "proto_build_test",
13541
targets = [
136-
":p4data_proto",
137-
":p4info_proto",
138-
":p4runtime_cc_grpc",
139-
":p4runtime_proto",
140-
":p4runtime_py_grpc",
141-
":p4types_proto",
42+
"//proto/p4/v1:p4data_proto",
43+
"//proto/p4/config/v1:p4info_proto",
44+
"//proto/p4/v1:p4runtime_cc_grpc",
45+
"//proto/p4/v1:p4runtime_proto",
46+
"//proto/p4/v1:p4runtime_py_grpc",
47+
"//proto/p4/config/v1:p4types_proto",
14248
],
14349
)

proto/p4/config/v1/BUILD.bazel

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
load("@rules_proto//proto:defs.bzl", "proto_library")
2+
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
3+
load("@com_github_grpc_grpc//bazel:python_rules.bzl", "py_proto_library")
4+
5+
package(
6+
default_visibility = ["//visibility:public"],
7+
)
8+
9+
proto_library(
10+
name = "p4types_proto",
11+
srcs = ["p4types.proto"],
12+
strip_import_prefix = "/proto",
13+
)
14+
15+
proto_library(
16+
name = "p4info_proto",
17+
srcs = ["p4info.proto"],
18+
deps = [
19+
":p4types_proto",
20+
"@com_google_protobuf//:any_proto",
21+
"@com_google_protobuf//:descriptor_proto",
22+
],
23+
strip_import_prefix = "/proto",
24+
)
25+
26+
cc_proto_library(
27+
name = "p4types_cc_proto",
28+
deps = [":p4types_proto"],
29+
)
30+
31+
cc_proto_library(
32+
name = "p4info_cc_proto",
33+
deps = [":p4info_proto"],
34+
)
35+
36+
py_proto_library(
37+
name = "p4types_py_proto",
38+
deps = [":p4types_proto"],
39+
)
40+
41+
py_proto_library(
42+
name = "p4info_py_proto",
43+
deps = [":p4info_proto"],
44+
)
45+
46+
go_proto_library(
47+
name = "p4info_go_proto",
48+
importpath = "github.com/p4lang/p4runtime/go/p4/config/v1",
49+
protos = [
50+
":p4info_proto",
51+
":p4types_proto",
52+
],
53+
)

proto/p4/v1/BUILD.bazel

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
load("@rules_proto//proto:defs.bzl", "proto_library")
2+
load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
3+
load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library")
4+
load("@com_github_grpc_grpc//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library")
5+
6+
package(
7+
default_visibility = ["//visibility:public"],
8+
)
9+
10+
proto_library(
11+
name = "p4data_proto",
12+
srcs = ["p4data.proto"],
13+
strip_import_prefix = "/proto",
14+
)
15+
16+
proto_library(
17+
name = "p4runtime_proto",
18+
srcs = ["p4runtime.proto"],
19+
deps = [
20+
":p4data_proto",
21+
"//proto/p4/config/v1:p4info_proto",
22+
"@com_google_googleapis//google/rpc:status_proto",
23+
"@com_google_protobuf//:any_proto",
24+
],
25+
strip_import_prefix = "/proto",
26+
)
27+
28+
cc_proto_library(
29+
name = "p4data_cc_proto",
30+
deps = [":p4data_proto"],
31+
)
32+
33+
cc_proto_library(
34+
name = "p4runtime_cc_proto",
35+
deps = [":p4runtime_proto"],
36+
)
37+
38+
py_proto_library(
39+
name = "p4data_py_proto",
40+
deps = [":p4data_proto"],
41+
)
42+
43+
py_proto_library(
44+
name = "p4runtime_py_proto",
45+
deps = [":p4runtime_proto"],
46+
)
47+
48+
go_proto_library(
49+
name = "p4runtime_go_proto",
50+
importpath = "github.com/p4lang/p4runtime/go/p4/v1",
51+
protos = [
52+
":p4data_proto",
53+
":p4runtime_proto",
54+
],
55+
deps = [
56+
"//proto/p4/config/v1:p4info_go_proto",
57+
"@com_google_googleapis//google/rpc:status_go_proto",
58+
],
59+
)
60+
61+
cc_grpc_library(
62+
name = "p4runtime_cc_grpc",
63+
srcs = [":p4runtime_proto"],
64+
generate_mocks = True,
65+
grpc_only = True,
66+
deps = [":p4runtime_cc_proto"],
67+
)
68+
69+
py_grpc_library(
70+
name = "p4runtime_py_grpc",
71+
srcs = [":p4runtime_proto"],
72+
deps = [":p4runtime_py_proto"],
73+
)

0 commit comments

Comments
 (0)