2017-09-06 42 views
1

即使在閱讀手冊後,我仍然無法理解文件_ $ {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無法知道從哪裏解開他們,對嗎?

所以,我已經添加文件_ $ {PN} + =「所有目錄路徑」,我安裝配方文件。那麼它工作得很好。

那麼,你能向我解釋爲什麼我需要這樣做嗎?什麼時候 ?如果提供了一個連貫的例子將是有幫助的。

回答

3

配方可以(通常會)生產多個包裝。系統並不是完全愚蠢的,所以例如所有的頭文件會自動進入-dev包,所有的文件都進入-doc,但是通常配方編寫者需要決定一個特定文件屬於哪個包。這是通過FILES_<packagename> += "/path/to/file"格式完成的。

爲FILES_ *默認值可以在meta/conf/bitbake.conf中查到,但是請注意,類你的食譜繼承也可以修改值:與bitbake -e <recipe>|grep ^FILES_

在你的情況下,它看起來像你的項目構建系統創造了一些檢查的最終值目錄但沒有放入任何東西?如果是這種情況,您可以選擇修改您的編譯系統來不這樣做,或者添加一個do_install_append()函數,該函數在安裝後刪除空目錄。