配方还产生需要包装的本机输出

时间:2019-07-10 13:34:57

标签: yocto bitbake openembedded

我有一个配方,可以成功调用旧版构建命令来交叉编译目标。

作为副作用,它会生成一些在构建中使用的自定义本机工具。

我想将这些工具收成-tools-native软件包,以允许其他配方依赖主软件包访问工件,并使用-tools-native软件包进一步处理这些工件。

我可以像添加以下内容那样构建本机包:

PROVIDES = "${PN} ${PN}-tools-native"
SYSROOT_DIRS += "/"
PACKAGES += "${PN}-tools-native"
FILES_${PN}-tools-native += "/native-bin/*"

并让install部分将本机工具安装到/ native-bin /

但是它在某种程度上并不是真正的本地软件包,并且当DEPENDS由其他配方native-bin artifacts are installed in recipe-sysroot instead of recipe-sysroot-native`

我还必须安装工具0644,否则bitbake尝试剥离它们(并且由于它们是本机构建而失败)。

由于本机工具已经由旧版构建命令生成,因此我实际上不需要作为-native配方变体来调用。

这是一个漫长的过程,我也不想运行两次。

目前,我通过在DEPEND上放置其他食谱recipe-native-tools并修复权限和PATH来解决此问题

但是执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

这通常由单独的配方处理。没有共享目标配方中的本机二进制文件的机制,因为它们的任务散列中包含错误类型的信息(它们的变化取决于目标体系结构)。

目标配方不会将其bindir / sbindir安装到sysroot中,因为我们无法运行它们,并且正如您所提到的,它们是错误的体系结构,因此它们会混淆strip等。

您可以尝试使用依赖于此目标配方的本机配方,并将本机配方保存的二进制文件安装到do_install的$ {D}中。这可能会发出一些警告,因为一般而言,本机配方不应该依赖于目标配方,但是如果您不能两次构建,则可能是您的最佳选择。