Встроенное программное обеспечение - зависимость рецептов Yocto скриншот компьютера

Зависимости рецептов Yocto

Как получить зависимости между переменными рецепта

Бывает ли такое, что вы создаете переопределение переменных рецепта в пользовательском метаслое, но ничего не происходит?

Не сомневайтесь в себе: проверьте приоритет используемых метаслоев.

Пример

Необходимо создать дистрибутив Yocto Linux для Raspberry Pi 4 и изменить фоновое изображение рецепта psplash. Для этого мы создаем папку "psplash" в пользовательском метаслое "meta-interelectronix" и добавляем файл "psplash_%.bbappend", чтобы переопределить переменные "SPLASH_IMAGES".

SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

После добавления "meta-interelectronix" в "bblayers.conf" мы выполняем bitbake дистрибутива Linux, устанавливаем его на SD-карту и загружаем с ним Raspberry Pi 4.

Но никакое пользовательское фоновое изображение для экрана-заставки не используется. Почему?

В чём причина?

После поиска ошибки ("error") мы смотрим на приоритетную переменную метаслоев. Метаслои имеют приоритетную переменную, чтобы определять, в каком ранге метаслой используется при выполнении bitbake дистрибутива Linux.

Переменная задается в файле "meta-interelectronix/conf/layer.conf":

BBFILE_PRIORITY_meta-interelectronix = "6"

В нашем случае приоритет "meta-interelectronix" установлен на 6, а приоритет "meta-raspberrypi" — на 9.

Чем выше приоритет, тем более поздние переменные файлов bbappend применялись к bitbake. Так как в "meta-raspberrypi" также есть файл "psplash_%.bbappend", переменные этого файла выполняют повторные переопределения в слое "meta-interelectronix". В итоге ничего не меняется.

Примечание

Измените приоритет своего пользовательского метаслоя на большое число, например 50, чтобы применить изменения позже как переопределения внешних метаслоев.

Как упростить ранжирование переменных?

Существует простая команда для ранжирования переменной по всем метаслоям:

bitbake-getvar -r recipe VARIABLE

Мы использовали следующую команду:

bitbake-getvar -r psplash SPLASH_IMAGES

Результат после изменения приоритета слоя "meta-interelectronix" на 50 выглядит так:

bitbake-getvar -r psplash SPLASH_IMAGES
#
# $SPLASH_IMAGES [4 operations]
#   set /workdir/poky-kirkstone/meta/recipes-core/psplash/psplash_git.bb:19
#     "file://psplash-poky-img.h;outsuffix=default"
#   set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:10
#     "file://psplash-ixlogo-white-img.h;outsuffix=interelectronix"
#   override[rpi]:set /workdir/poky-kirkstone/meta-raspberrypi/recipes-core/psplash/psplash_%.bbappend:2
#     "file://psplash-raspberrypi-img.h;outsuffix=raspberrypi"
#   override[rpi]:set /workdir/poky-kirkstone/meta-interelectronix/recipes-core/psplash/psplash_%.bbappend:9
#     "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
# pre-expansion value:
#   "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
SPLASH_IMAGES="file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

Вы также можете показать приоритет используемых слоев с помощью следующей команды:

bitbake-layers show-layers

Лицензия на авторские права

Авторское право © 2022 Interelectronix e.K.
Данный исходный код проекта лицензирован под лицензией GPL-3.0.