【发布时间】:2021-07-06 16:52:33
【问题描述】:
我有一个成功调用旧版构建命令来交叉编译目标的配方。
作为副作用,它会生成一些在构建中使用的自定义本机工具。
我想将这些工具放入 -tools-native 包中,以允许其他配方依赖主包来访问工件,并使用 -tools-native 包来进一步处理这些工件。
我可以构建这样一个原生包,只需添加:
PROVIDES = "${PN} ${PN}-tools-native"
SYSROOT_DIRS += "/"
PACKAGES += "${PN}-tools-native"
FILES_${PN}-tools-native += "/native-bin/*"
并让安装部分将本机工具安装到 /native-bin/
但不知何故,它并不是一个真正的原生包,当 DEPENDS'd 通过一个额外的配方时,native-bin artifacts are installed inrecipe-sysrootinstead ofrecipe-sysroot-native`
我还必须安装工具 0644 或 bitbake 尝试剥离它们(但失败,因为它们是原生构建)。
因为原生工具已经由旧版构建命令生成,所以我不需要实际调用 -native 配方变体。
这是一个漫长的过程,我也不想运行两次。
目前我通过在recipe-native-tools 上使用其他配方DEPEND 并修复权限和路径来解决它
但是正确的方法是什么?
【问题讨论】:
-
也许您可以使用覆盖(
class-target、class-native)和BBCLASSEXTEND,并在每种情况下选择要安装或忽略的内容。 -
感谢@danlor 的建议,但这不会涉及两次调用配方吗?我想避免。
-
是的...但恐怕没有其他办法了(好吧,或者,您可以为目标和主机编写单独的配方,在后者中声明
inherit native...)。 -
谢谢@dnalor,鉴于理查德在下面的回答,我会尝试按照你的思路工作。
标签: yocto bitbake openembedded