Отправить лишние файлы в рецепт модуля ядра

Есть ли способ отправить больше файлов при сборке модуля ядра из дерева?

Я пробовал что-то вроде этого:

FILES_${PN} += "${bindir}/my_program"
do_install_append() {
    install -d ${D}${bindir}
    install -m 0755 ${D}/my_program ${D}${bindir}/my_program
}

А вот так:

FILES_kernel-module-${PN} += "${bindir}/my_program"
do_install_append() {
    install -d ${D}${bindir}
    install -m 0755 ${D}/my_program ${D}${bindir}/my_program
}

Но все равно жалуется:

ERROR: QA Issue: my-module: Files/directories were installed but not shipped in any package:
  /usr
  /usr/bin
  /usr/bin/my_program
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
my-module: 3 installed and not shipped files. [installed-vs-shipped]

person XNor    schedule 09.05.2016    source источник


Ответы (3)


Это довольно распространенная ситуация - вы установили дополнительный бинарник, но он не был добавлен в выходной пакет (установлен, но не отправлен).

Решение должно основываться на типе файла, который необходимо добавить в выходное изображение.

Проверьте эту ветку: 2-этапное решение ОШИБКИ: проблема контроля качества: файлы/каталоги были установлено, но не отправлено

Кроме того, если вам нужно быстро проверить правильность сборки файлов и т. д., вы можете просто добавить эту строку в файл build/local.conf (поскольку вы уже установили их):

IMAGE_INSTALL += "{binary_name}"

Редактировать:

В дополнение к приведенному ниже комментарию от OP: извините за мое недоразумение, похоже, вам нужно наследовать module.bbclass в своем рецепте, ознакомьтесь с документом: Yocto Mega Manual - module.bbclass и дайте мне знать, подходит ли вам это. Вы также можете ознакомиться с этим простым руководством: Как собрать модуль ядра из дерева ядра

person iksajotien    schedule 10.05.2016
comment
Спасибо за ссылку, но это решение не будет работать для модуля ядра (когда вы добавляете include module в свой рецепт). Это решение в основном то, что я пытался сделать до сих пор. - person XNor; 10.05.2016

FILES_${PN} нельзя использовать для рецептов ядра, так как для ядра по крайней мере по умолчанию ${PN} не отображается в ПАКЕТАХ. «kernel-module-${PN}» также недействителен. Я предполагаю, что вы захотите добавить файл в базовый пакет ядра следующим образом:

FILES_kernel-base += "${bindir}/my_program"

person bluelightning    schedule 10.05.2016
comment
Я думаю, что на данный момент нам нужно увидеть весь ваш рецепт, прежде чем мы сможем помочь дальше. - person bluelightning; 15.05.2016

Я не верю, что module.bbclass удаляет ${PN} из ПАКЕТОВ, но очищает ФАЙЛЫ_${PN}. Поэтому, если вы хотите добавить какие-либо файлы в свой пакет, вы должны установить FILES_${PN} после модуля наследования.

person whenrybruce    schedule 20.12.2017