更新:此问题已经解决。我正在重新编辑问题以更新到固定状态。
我尝试编写一个使用dep
工具的配方,以便在构建之前解析go
相关项目的依赖关系。我正在使用' poky' “摇滚乐”的一层Yocto项目分支。该分支提供了构建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流程结束正常,不显示错误或警告。本地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
工具,只是为了解决本机平台上的依赖关系。)
之后,我执行此命令:
$ 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"
我不知道这是否是解决我问题的最佳方式,但至少现在它运作正常。任何改善这个配方的建议都很好。先感谢您! : - )
答案 0 :(得分:2)
DEPENDS += "go-dep"
表示您的目标配方可以包含go-dep提供的标题或链接库,但如果您需要运行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()
答案 1 :(得分:2)
我刚发送补丁[1]以启用本机和nativesdk对配方的支持。
答案 2 :(得分:0)
假设您使用与here相同的配方,您应该能够在do_compile_prepend构建步骤中引用$ {GO_INSTALL}变量。如果没有,请尝试使用bitbake命令运行-c devshell,如:
bitbake <package name> -c devshell
并查找dep工具的路径。