我创建了一个bbappend,用于从现有的(已修改的)u-boot编译u-boot fw_printenv / setenv实用程序并将其安装到$ {D}中。一切正常。我在配方中添加了一个额外的程序包,并使用FILES_告诉bitbake哪些程序包应具有哪些文件。 Bitbake似乎忽略了FILES_指令,或者其他方法正在覆盖它。我希望将$ {D} / boot的内容打包到u-boot-imx中,并将$ {D} / sbin和$ {D} / etc的内容打包到u-boot-fw-utils-imx中。 (我正在运行Yocto 2.2)
我尝试了FILES_u-boot-fw-utils-imx += "/sbin/* /etc/*"
。 / sbin中的文件使其进入u-boot-fw-utils-imx rpm,但/ etc中的配置文件仍位于u-boot-imx rpm中。然后,我尝试设置FILES_u-boot-imx = "/boot /boot/*"
和FILES_remove_u-boot-imx = "/etc/fw_env.config"
,但配置文件保留在软件包u-boot-imx中。
# bitbake -e | grep ^FILES_u-boot
FILES_u-boot-fw-utils-imx=" /sbin/* /etc /etc/fw_env.config"
FILES_u-boot-imx-bin="/usr/bin/* /usr/sbin/*"
FILES_u-boot-imx="/boot /etc"
...
似乎是我后面设置了FILES_u-boot-imx。
我的大部分.bbappend文件:
do_compile_append() {
# compile fw_printenv/setenv. default oe_runmake options are broken and yield an x86_64 executable. the inline python strips off the leading space in UBOOT_MACHINE.
make CROSS_COMPILE=arm-poky-linux-gnueabi- CC="arm-poky-linux-gnueabi-gcc --sysroot=${STAGING_DIR_TARGET} -I${STAGING_DIR_TCBOOTSTRAP}/usr/include -mfloat-abi=hard" V=1 -C ${S} O=${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()} env
}
do_install_append() {
install -d ${D}/sbin
install -d ${D}/etc
install -m 755 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_printenv ${D}/sbin/fw_printenv
install -m 755 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_printenv ${D}/sbin/fw_setenv
echo "/dev/mmcblk1boot0 0xe0000 0x2000" > ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_env.custom
install -m 0644 ${B}/${@bb.data.getVar('UBOOT_MACHINE', d, 1).strip()}/tools/env/fw_env.custom ${D}/etc/fw_env.config
}
PACKAGES += "u-boot-fw-utils-imx"
INSANE_SKIP_u-boot-imx = "already-stripped ldflags"
INSANE_SKIP_u-boot-fw-utils-imx = "already-stripped ldflags"
FILES_u-boot-imx = "/boot /boot/*"
FILES_u-boot-fw-utils-imx += "/sbin/* /etc /etc/fw_env.config"
有人可以解释一下如何以所需的软件包获取我的配置文件,或者将我指向下一个要查看的地方吗?
btw:我确定有人会问为什么我不使用现有的u-boot-fw-utils配方。我的食谱是用于早期版本的u-boot。当我运行该配方时,它没有编译。一旦我解决了为x86_64而不是目标平台编译的明显问题oe_runmake。
答案 0 :(得分:1)
不要使用bitbake -e | grep
,而只需将其插入less
,然后搜索您需要的FILES
分配。分配的上方将是变量设置方式的历史记录。
答案 1 :(得分:0)
知道了!两项观察:
最终FILES_指令:
FILES_u-boot-imx_remove = "${sysconfdir}"
FILES_u-boot-fw-utils-imx = "/sbin /etc"
感谢罗斯的建议,将bitbake -e减少到更少。