我创建了一个bitbake配方,它将我的两个文件(VPU的固件二进制文件)复制到目标根文件系统上的/ lib/firmware /目录中.
我尝试了很多选项,所以我现在不确定我的食谱中有什么不必要/多余以及需要什么.我认为FILESEXTRAPATHS ..,SRC_URI ..和do_install ..应该足够了,但它不适用于它,也不适用于所有其他的东西.
DESCRIPTION = "VPU libraries provided by fsl"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
PACKAGE_ARCH = "all"
ALLOW_EMPTY_${PN} = "1"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += " \
file://vpu_fw_imx6d.bin \
file://vpu_fw_imx6q.bin \
"
INSANE_SKIP_${PN} += "installed-vs-shipped"
do_install () {
install -d ${D}${base_libdir}/firmware/
cp ${WORKDIR}/vpu_fw_imx6d.bin ${D}${base_libdir}/firmware/
cp ${WORKDIR}/vpu_fw_imx6q.bin ${D}${base_libdir}/firmware/
chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6d.bin
chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6q.bin
}
PACKAGES = "${PN}"
FILES_${PN} += " \
${D}${base_libdir}/firmware/vpu_fw_imx6d.bin \
${D}${base_libdir}/firmware/vpu_fw_imx6q.bin \
"
Run Code Online (Sandbox Code Playgroud)
能不能指出我做错了什么?
编辑:
安德斯答案真的帮助并解决了这个问题.
我发布"固定"食谱,以防有人发现它有用.
DESCRIPTION = "VPU libraries provided by fsl"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690"
PACKAGE_ARCH = "all"
SRC_URI += " \
file://vpu_fw_imx6d.bin \
file://vpu_fw_imx6q.bin \
"
do_install () {
install -d ${D}${base_libdir}/firmware/
install -m 755 ${WORKDIR}/vpu_fw_imx6d.bin ${D}${base_libdir}/firmware/
install -m 755 ${WORKDIR}/vpu_fw_imx6q.bin ${D}${base_libdir}/firmware/
}
FILES_${PN} += " \
${base_libdir}/firmware/vpu_fw_imx6d.bin \
${base_libdir}/firmware/vpu_fw_imx6q.bin \
"
Run Code Online (Sandbox Code Playgroud)
And*_*ers 10
删除所有不必要的行,只是为了安全起见.
FILESEXTRAPATHS没有必要; 它仅在您编写.bbappend文件以修改另一层中的配方时使用.
ALLOW_EMPT_${PN}也不需要.它用于允许PN为空,这仅在您创建其他包时才有用.在您的情况下,您可以在PN中使用固件文件,因此如果无法安装文件,最好在构建程序包时出现bitbake错误.
INSANE_SKIP_${PN} += "installed-vs-shipped"也不需要.只有在你do_install没有放入包装的文件中安装文件时才需要它.通常,建议您不要安装它们或删除文件.
你do_install()应该工作得很好; 虽然我建议用install而不是cp和chmod.这样你就可以确保所有者和团体是正确的.(检查这个是作为Jethro的新QA检查添加的).
PACKAGES = "${PN}" 不需要.
${D}从你的FILES_${PN}定义中删除.路径FILES应该是目标上的路径(即不包括D-directory).
这应该让你无法前进.