aboutsummaryrefslogtreecommitdiffstats
path: root/build/ymake.core.conf
diff options
context:
space:
mode:
authormialinx <mialinx@yandex-team.com>2023-06-23 16:19:33 +0300
committermialinx <mialinx@yandex-team.com>2023-06-23 16:19:33 +0300
commitb5b172e661d423983bd94fd2d50cfa9c173771bd (patch)
tree736b78059081a12be45f102a392e41f1faa11e45 /build/ymake.core.conf
parent5e46f0301456285f1a47076638fcd7679cccafa4 (diff)
downloadydb-b5b172e661d423983bd94fd2d50cfa9c173771bd.tar.gz
Support for new progotobuf/grpc Go generators
Какие проблему решаем: 1) Текущий генератор (https://github.com/golang/protobuf/) - устаревший, и его рекомендуют заменить на новый (https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go) 2) Новый генератор использует интерфейсы в сгенерированных stubах ``` func RegisterTestAgentServiceServer(s grpc.ServiceRegistrar, srv TestAgentServiceServer) { // grpc.ServiceRegistrar - интерфейс ``` Вместо ``` func RegisterTestAgentServiceServer(s *grpc.Server, srv TestAgentServiceServer) { // *grpc.Server - конкретный тип ``` что необходимо нам для https://st.yandex-team.ru/ 3) чтобы не было попыток писать вот такое https://a.yandex-team.ru/arcadia/taxi/graph/fleet-tracking-system/grpc-gateway/go_lib/ya.make?rev=11743497#L25
Diffstat (limited to 'build/ymake.core.conf')
-rw-r--r--build/ymake.core.conf30
1 files changed, 27 insertions, 3 deletions
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index 133e15b135..923d32c493 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -71,6 +71,8 @@ FAIL_PY2=no
_PREBUILT_TOOLS_ROOT=build/prebuilt
_TOOL_PROTOC_GEN_GO=vendor/github.com/golang/protobuf/protoc-gen-go
+_TOOL_PROTOC_GEN_GO_V2=vendor/google.golang.org/protobuf/cmd/protoc-gen-go
+_TOOL_PROTOC_GEN_GO_GRPC_V2=vendor/google.golang.org/grpc/cmd/protoc-gen-go-grpc
_TOOL_RESCOMPILER=tools/rescompiler
_TOOL_RESCOMPRESSOR=tools/rescompressor
_TOOL_RORESCOMPILER=tools/rorescompiler
@@ -888,6 +890,10 @@ macro USE_COMMON_GOOGLE_APIS(APIS...) {
GO_PROTO_GEN_PLUGINS=
GO_PROTO_OPTS=
GO_PROTO_OUTS=
+GO_PROTO_GRPC_OPTS=
+GO_PROTO_GRPC_OUTS=
+GO_PROTO_V2=no
+_GO_PROTO_CHECK_OUTPUT=
# tag:go-specific tag:proto
GO_PROTOBUF_IMPORTS=\
@@ -926,7 +932,7 @@ macro GO_PROTO_PLUGIN(NAME, EXT, TOOL, DEPS[]) {
}
# tag:go-specific tag:proto
-GO_PROTO_CMDLINE=${cwd;rootdir;input:File} $YMAKE_PYTHON3 ${input:"build/scripts/go_proto_wrapper.py"} $GO_ARCADIA_PROJECT_PREFIX $GO_CONTRIB_PROJECT_PREFIX ./$PROTO_NAMESPACE $PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_PATH $_PROTOC_FLAGS ${input;rootrel:File}
+GO_PROTO_CMDLINE=${cwd;rootdir;input:File} $YMAKE_PYTHON3 ${input:"build/scripts/go_proto_wrapper.py"} --arcadia-prefix $GO_ARCADIA_PROJECT_PREFIX --contrib-prefix $GO_CONTRIB_PROJECT_PREFIX --namespace ./$PROTO_NAMESPACE $_GO_PROTO_CHECK_OUTPUT --proto ${input;rootrel:File} -- $PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_PATH $_PROTOC_FLAGS
# tag:go-specific tag:proto
macro _GO_PROTO_CMD_IMPL(File, OPTS...) {
@@ -1159,6 +1165,10 @@ macro GRPC() {
SET_APPEND(JAVA_PROTOBUF_PEERS contrib/java/javax/annotation/javax.annotation-api/1.3.1)
}
+macro GO_PROTO_USE_V2() {
+ ENABLE(GO_PROTO_V2)
+}
+
# tag:fbs
FLATC_FLAGS_VALUE=
### @usage: FLATC_FLAGS(flags...)
@@ -9080,6 +9090,8 @@ _GO_GRPC_WELLKNOWN=\
# tag:go-specific
macro _GO_GRPC() {
SET(GO_PROTO_GEN_PLUGINS plugins=grpc)
+ SET(GO_PROTO_GRPC_OPTS \$GO_PROTO_GRPC_OPTS_V2)
+ SET(GO_PROTO_GRPC_OUTS \$GO_PROTO_GRPC_OUTS_V2)
PEERDIR(${GOSTD}/context ${_GO_GRPC_WELLKNOWN})
}
@@ -9235,8 +9247,20 @@ module _GO_BASE_UNIT: _BASE_UNIT {
PEERDIR(build/external_resources/go_tools)
- GO_PROTO_OUTS+=${output;hide;norel;nopath;noext;suf=.pb.go:File}
- GO_PROTO_OPTS+=--plugin=protoc-gen-go=${tool:_TOOL_PROTOC_GEN_GO} --go_out=$GO_PROTO_GEN_PLUGINS:${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
+ GO_PROTO_GRPC_OPTS_V2=--plugin=protoc-gen-go-grpc=${tool:_TOOL_PROTOC_GEN_GO_GRPC_V2} --go-grpc_out=${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
+ GO_PROTO_GRPC_OUTS_V2=${output;norel;nopath;noext;suf=_grpc.pb.go:File}
+ select ($GO_PROTO_V2) {
+ "yes" | "on" ? {
+ GO_PROTO_OUTS+=${output;hide;norel;nopath;noext;suf=.pb.go:File}
+ GO_PROTO_OPTS+=--plugin=protoc-gen-go=${tool:_TOOL_PROTOC_GEN_GO_V2} --go_out=${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
+ _GO_PROTO_CHECK_OUTPUT=--check $GO_PROTO_GRPC_OUTS_V2
+ GO_PROTO_OPTS+=$GO_PROTO_GRPC_OPTS
+ }
+ default ? {
+ GO_PROTO_OUTS+=${output;hide;norel;nopath;noext;suf=.pb.go:File}
+ GO_PROTO_OPTS+=--plugin=protoc-gen-go=${tool:_TOOL_PROTOC_GEN_GO} --go_out=$GO_PROTO_GEN_PLUGINS:${ARCADIA_BUILD_ROOT}/$PROTO_NAMESPACE
+ }
+ }
when ($COMPILER_PLATFORM && $NEED_PLATFORM_PEERDIRS == "yes") {
PEERDIR+=$COMPILER_PLATFORM