gpt4 book ai didi

go - Bazel 在处理 protobuf 文件时有一个错误。我怎样才能暂时解决这个问题?

转载 作者:IT王子 更新时间:2023-10-29 02:09:47 33 4
gpt4 key购买 nike

我在使用 Bazel、Go 和 Protobuf 构建代码库时遇到问题。 Protobuf 文件在生成时未由 Bazel Gezelle 正确映射。我认为这是一个 known bug .我打开了我的 own ticket .如果这是问题所在,我不认为它会很快得到解决。它被标记为 P2,自 10 月以来一直开放。与此同时,我正在寻找问题的解决方案。

我们使用自定义 Protobuf plugin在构建我们的 protobuf 文件时。我的想法是手动生成 protobuf 文件,让 Bazel 忽略 protobuf 文件,只使用已经生成的代码。

这听起来行得通吗?我该怎么做?我可以让 Gezelle 为我忽略 Protobuf 文件吗?

谢谢你的时间

最佳答案

复制我在 bazelbuild/bazel-gazelle#209 上的回复对于遇到相同问题的任何人。


是的,bazelbuild/bazel#3867是问题。

每当您使用 Bazel 构建一个 proto_library(对于任何语言,而不仅仅是 Go),Bazel 认为导入是相对于存储库根目录(在您的本地存储库中或在您的任何外部存储库中)存储库)。我猜 brand.proto 正在导入 github.com/xxx/jscode/jsge/pkg/paging/proto/page.proto。由于您要导入的文件实际上是 jsge/pkg/paging/proto/page.proto,因此 Bazel 调用时 protoc 将找不到它。

由于这是 proto_library 的问题,因此 Gazelle 或 rules_go 对此无能为力。如果bazelbuild/bazel#3867实现后,您将能够调整 proto_library 导入路径。到那时,您将无法在不修改规则的情况下构建 proto_library 规则。

不幸的是,目前我能提供的最佳建议是检查预先生成的 .pb.go 文件并将它们包含在您的 go_library 规则中。如果您在根构建文件中添加注释 # gazelle:proto disable,它将忽略 .proto 文件并包含 .pb.go 文件。

关于go - Bazel 在处理 protobuf 文件时有一个错误。我怎样才能暂时解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50519647/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com