Bazel GO_EMBED_DATA&Quot;无法嵌入&Quot; [英] bazel go_embed_data "could not embed"

查看:0
本文介绍了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_librarySRCS中的: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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆