Bazel GO_EMBED_DATA&Quot;无法嵌入&Quot; [英] bazel go_embed_data "could not embed"
本文介绍了Bazel GO_EMBED_DATA&Quot;无法嵌入&Quot;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将以下Bazel版本配置为
gazelle(name = "gazelle")
go_embed_data(
name = "static_files",
srcs = glob(["static/**/*"]),
package = "main",
var = "staticFS",
)
go_library(
name = "kmdr_lib",
srcs = ["main.go"],
importpath = "github.com/myorg/myrepo",
visibility = ["//visibility:private"],
deps = [
"//api",
"//cmd",
],
)
使用以下嵌入标记
package main
import (
"embed"
"github.com/myorg/myrepo/api"
"github.com/myorg/myrepo/cmd"
)
//go:embed static/*
var staticFS embed.FS
func main() {
api.StaticFS = staticFS
cmd.Execute()
}
但是,当运行...
bazel run //:gazelle
bazel build //...
我收到以下错误,Go Main包中标记的静态文件无法匹配。
ERROR: GoCompilePkg kmdr_osx_amd64.a failed: (Exit 1): builder failed: error executing command bazel-out/host/bin/external/go_sdk/builder compilepkg -sdk external/go_sdk -installsuffix darwin_amd64 -src main.go -arc ... (remaining 17 argument(s) skipped)
Use --sandbox_debug to see verbose messages from the sandbox
compilepkg: baf0dff8fcdeaf74ff5ba5ff8921e77f/sandbox/linux-sandbox/425/execroot/__main__/main.go:22:12: could not embed static/*: no matching files found
INFO: Elapsed time: 1.249s, Critical Path: 0.15s
INFO: 5 processes: 5 internal.
FAILED: Build did NOT complete successfully
go_embed_data
文档没有提供有关如何使用库的详细信息。我还尝试引用了go_library
SRCS中的:static_files
,但瞪羚重写了它。
如果我引用SRCS库中的GO_EMEBED_DATA,Bazel将重写go_library
GO_EMBED_DATA生成一个.go文件,其中包含文件或文件列表中的数据。它应该在某个核心围棋规则的SRCS列表中使用。
go_library(
name = "kmdr_lib",
srcs = ["main.go", ":static_files"],
importpath = "github.com/myorg/myrepo",
visibility = ["//visibility:private"],
deps = [
"//api",
"//cmd",
],
)
编辑:
go build
将按预期分析标记并嵌入数据
推荐答案
看起来go_embed_data
不是正确的方法。
针对此问题制定了公关https://github.com/bazelbuild/rules_go/pull/2806#issuecomment-784690934
将embedsrcs
添加到go_library
将遵循go:embed
指令
这篇关于Bazel GO_EMBED_DATA&Quot;无法嵌入&Quot;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文