我有一个配方,可以成功调用旧版构建命令来交叉编译目标。
作为副作用,它会生成一些在构建中使用的自定义本机工具。
我想将这些工具收成-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来解决此问题
但是执行此操作的正确方法是什么?
答案 0 :(得分:1)
这通常由单独的配方处理。没有共享目标配方中的本机二进制文件的机制,因为它们的任务散列中包含错误类型的信息(它们的变化取决于目标体系结构)。
目标配方不会将其bindir / sbindir安装到sysroot中,因为我们无法运行它们,并且正如您所提到的,它们是错误的体系结构,因此它们会混淆strip等。
您可以尝试使用依赖于此目标配方的本机配方,并将本机配方保存的二进制文件安装到do_install的$ {D}中。这可能会发出一些警告,因为一般而言,本机配方不应该依赖于目标配方,但是如果您不能两次构建,则可能是您的最佳选择。