2015-02-06 3 views
1

Я хотел бы разделить и приложение на несколько пакетов. В принципе, я просто хотел бы добавить другой, который можно было бы создать, используя конкретное изображение.Ошибка Bitbake - Nothing RPROVIDES

Внутри .bb файла, связанного с приложением я добавил:

SRC_URI = " \ 
      ... 
      file://api.conf \ 
      file://script.sh \ 
      " 

PACKAGES =+ "${PN} ${PN}-tools" 

FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh \ 
        ${sysconfdir}/mrvl/api.conf \ 
        " 

Затем я добавил следующую строку в моем бб тест изображения

IMAGE_INSTALL += " mrvl-tools" 

Я использую команду Bitbake image- тест, который возвращает:

ERROR: Nothing RPROVIDES 'mrvl-tools' (but /home/usr/../image-test.bb RDEPENDS on or otherwise requires it) 
NOTE: Runtime target 'mrvl-tools' is unbuildable, removing... 
Missing or unbuildable dependency chain was: ['mrvl-tools'] 
ERROR: Required build target 'image-test' has no buildable providers. 
Missing or unbuildable dependency chain was: ['image-test', 'mrvl-tools'] 

Я следовал тому же определению пакета bluez5-obex и IM AGE_ISTALL + = "bluez5-obex" работает.

Что я забыл?

+0

Что такое «MRVL-инструменты»? У вас также должен быть рецепт. – KBart

+0

У меня уже есть рецепты «mrvl», я добавил script.sh и api.conf под/mrvl/files, и я просто хотел бы разделить рецепт, чтобы включить эти оба файла только в мои изображения, предназначенные для теста. Я следовал: http://www.yoctoproject.org/docs/1.1/poky-ref-manual/poky-ref-manual.html#splitting-an-application-into-multiple-packages – ogs

+0

Устанавливать script.sh и api .conf в do_install()? В противном случае mrvl-tools будет пустым и, следовательно, не будет создан ... – Anders

ответ

1

Андерс близко.

Во-первых, ваше определение PACKAGES неверно, все, что вам нужно, это PACKAGES + = "$ {PN} -tools".

Но важно помнить, что FILES оценивается в порядке ПАКЕТОВ, поэтому сначала обрабатывается $ {PN}, а по умолчанию FILES _ $ {PN} содержит $ {bindir} $ {sysconfdir}, поэтому все $ {bindir} и $ {sysconfdir} находится в $ {PN}. Затем он пытается обрабатывать $ {PN} -tools, и ни одно из выражений в FILES не соответствует остальным файлам, поэтому пакет пуст.

Таким образом, либо набор FILES _ $ {PN}, что вы хотите его содержать, или использовать PACKAGE_BEFORE_PN = $ {PN} -Инструменты впрыснуть PN-инструменты перед тем PN в значение по умолчанию ПАКЕТЫ. Чтение bitbake.conf поможет сделать это более ясным, я обещаю.

Обратите внимание, что я ожидал, что ошибка будет ошибкой rootfs-time, а не сбоем построения изображения, но, надеюсь, это проблема.

0

Спасибо Росс Бертон за ответ. Но я изменил .bb файл, и он в настоящее время содержит следующие строки:

SUMMARY_${PN}-tools="mrvl tools test" 
PACKAGE_BEFORE_PN += "${PN}-tools" 
RDEPENDS_${PN}-tools = "" 

FILES_${PN}-tools = "${bindir}/mrvl/tools/script.sh ${sysconfdir}/mrvl/api.conf" 
ALLOW_EMPTY_${PN}-tools = "1" 

Билд законченным и пакет с именем MRVL тест-tools_0.1-r0.ipk хорошо создан в/сборки/TMP/развернуть/ipk/board/но ничего не содержит. Это связано с переменной "ALLOW_EMPTY .. =" 1 "". и без этой линии сборки не удалось, и выводится следующее сообщение

Collected errors: 
* opkg_install_cmd: Cannot install package mrvl-test-tools. 

ERROR: Function failed: do_rootfs 
ERROR: Logfile of failure stored in: /home/../build/tmp/work/oe-linux/test-img/1.0-r0/temp/log.do_rootfs.4639 
ERROR: Task 7 (/home/../sources/meta-board/recipes-images/images/test-img.bb, do_rootfs) failed with exit code '1' 

Я не понимаю, почему файлы теперь не входит в .ipk

+0

Можете ли вы показать нам полный .bb-файл? Поскольку mrl-test-tools все еще пуст, я не думаю, что вы правильно устанавливаете script.sh и api.conf. Таким образом, я бы хотел увидеть полный рецепт. И удалите 'ALLOW_EMPTY _ $ {PN} -tools =" 1 "', так как вы не хотите получать пустой пакет. Является ли слой общедоступным? – Anders