マニュアルを読んだ後でもFILES _ $ {PN}を理解できません。たとえば、起動スクリプトを作成する この例 に取り組んでいました。似たようなものを書いた後、これらのエラーメッセージが表示されました。
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} + = "すべてのディレクトリパスを追加"を追加しました。その後、うまくいきました。
それで、なぜこれをする必要があるのか説明してもらえますか?そしていつ?首尾一貫した例が提供されている場合は、参考になります。
レシピは複数のパッケージを生成できます(通常は生成します)。システムは完全に愚かではないため、たとえば、すべてのヘッダーは自動的に_-dev
_パッケージに入り、すべてのドキュメントは_-doc
_に入りますが、多くの場合、レシピ作成者は特定のファイルのパッケージを決定する必要があります属する。これは_FILES_<packagename> += "/path/to/file"
_形式で行われます。
FILES_ *のデフォルト値は_meta/conf/bitbake.conf
_にありますが、レシピが継承するクラスも値を変更する可能性があることに注意してください:_bitbake -e <recipe>|grep ^FILES_
_で最終値を確認してください
あなたの場合、あなたのプロジェクトビルドシステムはいくつかのディレクトリを作成したようですが、そこには何も入れていませんか?そうである場合は、ビルドシステムを変更しないようにするか、インストール後に空のディレクトリを削除するdo_install_append()
関数を追加することもできます。
通常、<package name>
はYoctoで${PN}
変数を使用して既に定義されているため、ファイルの割り当ては簡単です。また、アスタリスク*
は、サブツリー全体を追加する場合に正常に機能します。おそらく、最終的な画像ツリーのどこにデータを配置するかについて、いくつかの事前定義された変数を使用することを検討してください。
FILES_${PN} += "${nonarch_base_libdir}/<your package folder>/*"