gpt4 book ai didi

go - 使用 dep 工具管理 Go 依赖项的 Yocto 配方

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

更新:这个问题已经解决了。我正在重新编辑问题以更新到固定状态。

我正在尝试编写一个使用 dep 工具的方法,在构建它之前解决 go 相关项目的依赖关系。我正在使用“rocko”Yocto 项目分支的“poky”层。该分支提供构建 go 编译器和 dep 依赖项工具的方法。

我的初始配方从 bitbucket 存储库中获取源代码:

GO_IMPORT = "bitbucket.org/path/to/my_project"
SRC_URI = "git://${GO_IMPORT}/protocol=http;user=${GIT_USER}:${GIT_PASS};destsuffix=${PN}-${PV}/src/${GO_IMPORT}"

然后我添加这个:

inherit go
DEPENDS += "go-dep"

添加这个函数后:

do_compile_prepend() {
dep init
dep ensure
}

Yocto 提示这个错误:

run.do_compile.8543: line 118: dep: command not found

阅读下面您的一些答案后,我在 poky/meta/recipes-devtools/go/go-dep_0.3.0.bb 配方文件的末尾添加了您的答案中的建议补丁 - 非常感谢! :-)

BBCLASSEXTEND = "native nativesdk"

在我执行一些 bitbake 命令后:

$ bitbake -c cleanall go-dep-native
$ bitbake go-dep-native

Bitbake 进程正常结束,没有显示任何错误或警告。 native go-dep 工具已内置到 tmp/work/x86_64-linux/go-dep-native 目录中,并已正确安装到 tmp/sysroots-components/x86_64/go-dep-native/usr/bin。

我修改了 do_compile_prepend() 函数,如下所示:

do_compile_prepend() {
rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.toml
rm -f ${WORKDIR}/build/src/${GO_IMPORT}/Gopkg.lock
cd ${WORKDIR}/build/src/${GO_IMPORT}
dep init
dep ensure
}

我在我的食谱中修改 DEPENDS 是这样的:

DEPENDS = "go-native go-dep-native"

请注意 go-dep 已被删除(我不需要目标设备上的 dep 工具,只是为了解决 native 平台上的依赖关系)。

之后,我执行这个命令:

$ bitbake <foo>

do_compile 阶段工作正常,但在执行 do_package 阶段时出现一些错误:

ERROR: <foo>-1.0-r0 do_package: QA Issue: File '/usr/bin/dep' from <foo> was already stripped, this will prevent future debugging! [already-stripped]
ERROR: <foo>-1.0-r0 do_package: Fatal QA errors found, failing task.
ERROR: <foo>-1.0-r0 do_package: Function failed: do_package

这些错误已修复,在我的食谱末尾附加了这个:

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
RDEPENDS_${PN}-staticdev += "bash"
RDEPENDS_${PN}-dev += "bash"

我不知道这是否是解决我的问题的最佳方法,但至少现在它工作正常。欢迎提出任何改进此食谱的建议。先感谢您! :-)

最佳答案

DEPENDS += "go-dep" 意味着您的目标 配方可以包含 go-dep 提供的 header 或链接库,但您不能运行dep命令,如果需要运行dep命令,需要依赖go-dep-native:

DEPENDS += "go-dep-native"

但是yocto目前没有提供go-dep-native,所以你要加上:

BBCLASSEXTEND = "native"

meta/recipes-devtools/go/go-dep_XXX.bb。

然后你可以在do_compile_prepend()中运行dep命令

关于go - 使用 dep 工具管理 Go 依赖项的 Yocto 配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48318030/

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