使用FILES _ $ {PN}的示例

时间:2017-09-06 09:05:36

标签: yocto openembedded

即使我阅读了手册,我也无法理解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} + =“所有目录路径”,我安装了配方文件。然后它运作良好。

那么,你能解释一下为什么我需要这样做吗?什么时候 ?如果提供了一个连贯的例子会有所帮助。

2 个答案:

答案 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>/*"