配方还产生需要打包的原生输出
recipe also produces -native output that needs packaging
我有一个成功调用遗留构建命令来交叉编译目标的方法。
作为副作用,它会生成一些在构建中使用的自定义本机工具。
我想将这些工具收集到一个 -tools-native
包中,以允许其他配方依赖主包来访问工件,并使用 -tools-native
包进一步处理这些工件。
我可以构建这样一个原生包,只需添加:
PROVIDES = "${PN} ${PN}-tools-native"
SYSROOT_DIRS += "/"
PACKAGES += "${PN}-tools-native"
FILES_${PN}-tools-native += "/native-bin/*"
并让安装部分将本机工具安装到 /native-bin/
但不知何故它不是一个真正的原生包,当 DEPENDS
由一个额外的配方 native-bin artifacts are installed in
recipe-sysrootinstead of
recipe-sysroot-native`
我还必须安装工具 0644 或 bitbake 尝试剥离它们(但失败了,因为它们是本机构建)。
因为原生工具已经由遗留构建命令生成,所以我不需要实际调用作为 -native
配方变体。
这是一个漫长的过程,我也不想运行它两次。
目前我通过在 recipe-native-tools
上使用其他食谱 DEPEND
并修复权限和 PATH
来解决这个问题
但是这样做的正确方法是什么?
这通常由单独的配方处理。没有从目标配方共享本机二进制文件的机制,因为它们的任务哈希中包含错误类型的信息(它们会根据目标体系结构而变化)。
目标食谱不会将它们的 bindir/sbindir 安装到 sysroot 中,因为我们不能 运行 它们并且正如您提到的那样,它们是错误的体系结构,因此它们混淆了 strip 等等。
您可以尝试拥有一个依赖于此目标配方的本机配方,并将目标配方保存的二进制文件安装到位于 do_install 的 ${D} 中的某处。这可能会给出一些警告,因为一般来说,原生配方不应该依赖于目标配方,但如果你不能构建两次,这可能是你最好的选择。
我有一个成功调用遗留构建命令来交叉编译目标的方法。
作为副作用,它会生成一些在构建中使用的自定义本机工具。
我想将这些工具收集到一个 -tools-native
包中,以允许其他配方依赖主包来访问工件,并使用 -tools-native
包进一步处理这些工件。
我可以构建这样一个原生包,只需添加:
PROVIDES = "${PN} ${PN}-tools-native"
SYSROOT_DIRS += "/"
PACKAGES += "${PN}-tools-native"
FILES_${PN}-tools-native += "/native-bin/*"
并让安装部分将本机工具安装到 /native-bin/
但不知何故它不是一个真正的原生包,当 DEPENDS
由一个额外的配方 native-bin artifacts are installed in
recipe-sysrootinstead of
recipe-sysroot-native`
我还必须安装工具 0644 或 bitbake 尝试剥离它们(但失败了,因为它们是本机构建)。
因为原生工具已经由遗留构建命令生成,所以我不需要实际调用作为 -native
配方变体。
这是一个漫长的过程,我也不想运行它两次。
目前我通过在 recipe-native-tools
上使用其他食谱 DEPEND
并修复权限和 PATH
但是这样做的正确方法是什么?
这通常由单独的配方处理。没有从目标配方共享本机二进制文件的机制,因为它们的任务哈希中包含错误类型的信息(它们会根据目标体系结构而变化)。
目标食谱不会将它们的 bindir/sbindir 安装到 sysroot 中,因为我们不能 运行 它们并且正如您提到的那样,它们是错误的体系结构,因此它们混淆了 strip 等等。
您可以尝试拥有一个依赖于此目标配方的本机配方,并将目标配方保存的二进制文件安装到位于 do_install 的 ${D} 中的某处。这可能会给出一些警告,因为一般来说,原生配方不应该依赖于目标配方,但如果你不能构建两次,这可能是你最好的选择。