diff options
author | mialinx <mialinx@yandex-team.com> | 2023-06-23 16:19:33 +0300 |
---|---|---|
committer | mialinx <mialinx@yandex-team.com> | 2023-06-23 16:19:33 +0300 |
commit | b5b172e661d423983bd94fd2d50cfa9c173771bd (patch) | |
tree | 736b78059081a12be45f102a392e41f1faa11e45 /build/ymake.core.conf | |
parent | 5e46f0301456285f1a47076638fcd7679cccafa4 (diff) | |
download | ydb-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.conf | 30 |
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 |