我想将一个应用程序拆分为多个包。基本上我只是想添加另一个可以使用特定图像构建的。
在与我添加的应用程序关联的 .bb 文件内:
SRC_URI = " \
...
file://api.conf \
file://script.sh \
"
PACKAGES =+ "${PN} ${PN}-tools"
FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh \
${sysconfdir}/mrvl/api.conf \
"
然后,我在 bb 图像测试中添加了以下行:
IMAGE_INSTALL += " mrvl-tools"
我正在使用命令
bitbake image-test
,它返回:
ERROR: Nothing RPROVIDES 'mrvl-tools' (but /home/usr/../image-test.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'mrvl-tools' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['mrvl-tools']
ERROR: Required build target 'image-test' has no buildable providers.
Missing or unbuildable dependency chain was: ['image-test', 'mrvl-tools']
我遵循了
bluez5-obex
包的相同定义,并且 IMAGE_ISTALL += " bluez5-obex"
有效..
我忘记了什么?
安德斯很接近。
首先,你的 PACKAGES 定义是错误的,你需要的只是 PACKAGES += "${PN}-tools"。
但是要记住的重要一点是,FILES 是按照 PACKAGES 的顺序进行评估的,因此首先处理 ${PN},并且默认的 FILES_${PN} 包含 ${bindir} ${sysconfdir},因此 $ 的 all {bindir} 和 ${sysconfdir} 位于 ${PN} 中。然后它尝试处理 ${PN}-tools 并且其 FILES 中的任何表达式都不与剩余的任何文件匹配,因此包是空的。
因此,要么将 FILES_${PN} 设置为您希望它包含的内容,要么使用 PACKAGE_BEFORE_PN=${PN}-tools 在默认 PACKAGES 值中注入 PN-tools before PN。我保证,阅读 bitbake.conf 将有助于让这一点变得更清楚。
请注意,我预计错误是 rootfs 时间故障而不是映像构建失败,但希望这就是问题所在。
最好验证该图层是否已添加到
conf/bblayers.conf
这通常是从“没有提供任何东西”开始
BBLAYERS += " \
${BSPDIR}/sources/"your layer" \
感谢罗斯·伯顿的回答。但我修改了 .bb 文件,它当前包含以下几行:
SUMMARY_${PN}-tools="mrvl tools test"
PACKAGE_BEFORE_PN += "${PN}-tools"
RDEPENDS_${PN}-tools = ""
FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh ${sysconfdir}/mrvl/api.conf"
ALLOW_EMPTY_${PN}-tools = "1"
构建完成,名为 mrvl-test-tools_0.1-r0.ipk 的包在 /build/tmp/deploy/ipk/board/ 下创建良好,但它不包含任何内容。这是由于变量“ALLOW_EMPTY..=”1“”造成的。如果没有这一行,构建就会失败并显示以下消息
Collected errors:
* opkg_install_cmd: Cannot install package mrvl-test-tools.
ERROR: Function failed: do_rootfs
ERROR: Logfile of failure stored in: /home/../build/tmp/work/oe-linux/test-img/1.0-r0/temp/log.do_rootfs.4639
ERROR: Task 7 (/home/../sources/meta-board/recipes-images/images/test-img.bb, do_rootfs) failed with exit code '1'
我不明白为什么文件现在不包含在 .ipk 中
额外文件路径不需要添加
file
吗
THISAPPENDFILESDIR := "${THISDIR}/file"
FILESEXTRAPATHS_prepend := "${THISDIR}/file:"
我也遇到过类似的问题。我更改了 local.conf 文件。它应该包括 .bb 文件的名称而不是 bblayer 名称。 例如,我有一个 rdepend-example 层:
/home/abu/Documents/yocto_bb/projects/yocto/poky/meta-rdependlayer/recipes-example/rdepend-example/hello_1.1_r1.bb
现在我将其添加到我的 loca.conf 文件中
IMAGE_INSTALL:append = " hello"
如果您在 local.conf 文件中写入以下行,您将收到错误消息:
IMAGE_INSTALL:append = " rdepend-example"