添加github.com/openconfig/ygot v0.29.20后Bazel构建失败求助
解决Bazel构建失败问题
问题根源
ygot v0.29.20依赖的com_github_openconfig_gnmi外部仓库中,value目录未配置BUILD文件,导致Bazel无法识别该目录为合法包。
可行解决方案
1. 指定与ygot兼容的gnmi版本
在项目的WORKSPACE文件中,明确声明ygot v0.29.20依赖的gnmi具体版本(可查看ygot v0.29.20的go.mod文件获取对应版本),示例配置:
http_archive( name = "com_github_openconfig_gnmi", urls = ["https://github.com/openconfig/gnmi/archive/refs/tags/v0.12.0.tar.gz"], strip_prefix = "gnmi-0.12.0", sha256 = "替换为对应版本的SHA256哈希值", )
2. 为gnmi的value目录添加BUILD文件
通过补丁规则给外部仓库的value目录补充BUILD配置:
- 创建补丁文件
gnmi_value_build.patch,内容如下:
diff --git a/value/BUILD.bazel b/value/BUILD.bazel new file mode 100644 index 0000000..d41d8cd --- /dev/null +++ b/value/BUILD.bazel @@ -0,0 +1,10 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "value", + srcs = ["value.go"], + importpath = "github.com/openconfig/gnmi/value", + visibility = ["//visibility:public"], +)
- 在
WORKSPACE的http_archive配置中引入该补丁:
http_archive( name = "com_github_openconfig_gnmi", urls = ["你当前使用的gnmi包下载URL"], strip_prefix = "gnmi-对应版本号", patches = [":gnmi_value_build.patch"], )
3. 切换ygot版本
升级或降级ygot到其他稳定版本,选择那些依赖的gnmi仓库已完整配置BUILD文件的版本,可避免此类依赖配置缺失问题。
内容的提问来源于stack exchange,提问作者crr
相关产品推荐
相关产品推荐

