即使我阅读了手册,我也无法理解FILES _ $ {PN}。例如,我正在制作启动脚本的this example。在我写了类似的东西后,我收到了这些错误信息。
ERROR: initscriptd-1.0-r0 do_package: QA Issue: initscriptd: Files/directories were installed but not shipped in any package:
/usr
/usr/sbin
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
initscriptd: 2 installed and not shipped files. [installed-vs-shipped]
ERROR: initscriptd-1.0-r0 do_package: Fatal QA errors found, failing task.
ERROR: initscriptd-1.0-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /home/yahia/Desktop/elinux_dev/bake_factory/poky-pyro-17.0.1/build/tmp/work/core2-64-poky-linux/initscriptd/1.0-r0/temp/log.do_package.5252
ERROR: Task (/home/yahia/Desktop/elinux_dev/bake_factory/poky-pyro-17.0.1/meta-mylayer/recipes-core/mylayer-initscript/initscriptd.bb:do_package) failed with exit code '1'
正如我所理解的那样,我在图像上安装配方的文件没有包装在某个包装中,因此yocto无法知道在哪里打开它们,我是否正确?
所以,我已经添加了FILES _ $ {PN} + =“所有目录路径”,我安装了配方文件。然后它运作良好。
那么,你能解释一下为什么我需要这样做吗?什么时候 ?如果提供了一个连贯的例子会有所帮助。
答案 0 :(得分:6)
配方可以(通常会)生成多个包。系统并不是完全愚蠢的,例如所有标题都将自动进入-dev
包,所有文档都进入-doc
,但是配方编写者通常需要决定哪个包是特定文件属于。这是使用FILES_<packagename> += "/path/to/file"
格式完成的。
FILES_ *的默认值可以在meta/conf/bitbake.conf
中找到,但请注意您的配方继承的类也可以修改值:使用bitbake -e <recipe>|grep ^FILES_
检查最终值
在你的情况下,看起来你的项目构建系统创建了一些目录,但没有在其中放置任何东西?如果是这种情况,你可以修改你的构建系统,不要这样做,或者添加一个do_install_append()
函数,在安装后删除空目录。
答案 1 :(得分:0)
<package name>
已经在Yocto中使用${PN}
变量定义,因此文件分配很简单。如果你想添加整个子树,星号*
也能正常工作。并且可能考虑在最终图像树上使用一些预定义变量来存放你的东西:
FILES_${PN} += "${nonarch_base_libdir}/<your package folder>/*"