Embedded Software - Yocto recipes dependency zrzut ekranu komputera

Zależności receptur Yocto

Jak uzyskać zależności między zmiennymi receptury

Czy zdarza się, że nadpisujesz zmienne receptury w swojej niestandardowej meta-warstwie i nic się nie dzieje?

Nie trać wiary w siebie i przyjrzyj się priorytetowi stosowanych meta-warstw.

Przykład

Chcemy zbudować Yocto Linux distro dla Raspberry Pi 4 i zmienić obraz tła psplash receptury. W tym celu tworzymy folder „psplash” w naszej niestandardowej meta-warstwie „meta-interelectronix” i dodajemy plik „psplash_% .bbappend”, aby zastąpić zmienne „SPLASH_IMAGES”.

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

Po dodaniu „meta-interelectronix” do „bblayers.conf” możemy stworzyć za pomocą bitbake distro Linuksa, zapisać go jako dysk flash na karcie SD i uruchomić Raspberry Pi 4 z nim.

Nie pojawił się obraz tła dla ekranu powitalnego – dlaczego?

Co powoduje takie zachowanie?

Po wyszukaniu „błędu” przyjrzeliśmy się zmiennej priorytetowej meta-warstwy. Meta-warstwy mają zmienną dla priorytetu, aby określić, w której randze meta-warstwa jest używana podczas bitbakingu dystrybucji Linuksa.

Zmienna jest ustawiona w pliku „meta-interelectronix/conf/layer.conf”:

BBFILE_PRIORITY_meta-interelectronix = "6"

W naszym przypadku priorytet „meta-interelectronix” został ustawiony na „6”, a priorytet „meta-raspberrypi” na „9”.

Im wyższy priorytet, tym późniejsze były zmienne plików bbappend zastosowane do bitbake. Podobnie jak w pliku „meta-raspberrypi” jest również plikiem „psplash_% .bbappend”, zmienne tego pliku ponownie zastępują nadpisania w warstwie „meta-interelectronix”, nic się nie zmienia.

Uwaga

Zmień priorytet niestandardowej meta-warstwy na wysoką liczbę, np. 50, aby zastosować zmiany później jako wszystkie nadpisania zewnętrznych meta-warstw.

Jak można łatwo uzyskać ranking zmiennych?

Istnieje łatwe polecenie, aby uzyskać ranking zmiennej nad wszystkimi meta-warstwami:

bitbake-getvar -r recipe VARIABLE

W naszym przypadku poleceniem było:

bitbake-getvar -r psplash SPLASH_IMAGES

Wynik po zmianie priorytetu warstwy „meta-interelectronix” na „50” wygląda następująco:

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"

Priorytet używanych warstw można również wyświetlić za pomocą następującego polecenia:

bitbake-layers show-layers

Licencja na prawa autorskie

Copyright © 2022 Interelectronix e.K.
Ten kod źródłowy projektu jest udostępniany na licencji **GPL-3.0 * *.