Embedded Software - Yocto recepty, závislost, snímek obrazovky počítače

Závislosti receptů Yocto

Jak získat závislosti mezi proměnnými receptury

Stalo se vám někdy, že jste ve své vlastní metavrstvě vytvořili přepsání proměnných receptu a nic se nestalo?

Nepochybujte o sobě a podívejte se na prioritu použitých meta-vrstev.

Příklad

Chceme vytvořit distribuci Yocto Linux pro Raspberry Pi 4 a změnit obrázek na pozadí receptu na psplash. Za tímto účelem vytvoříme složku 'psplash' v naší vlastní meta-vrstvě 'meta-interelectronix' a přidáme soubor 'psplash_%.bbappend', abychom přepsali proměnné 'SPLASH_IMAGES'.

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

Po přidání 'meta-interelectronix' do 'bblayers.conf' jsme bitbake linuxové distribuce, flash ji na SD kartu a bootujeme s ní Raspberry Pi 4.

Ale nebyl použit žádný vlastní obrázek na pozadí pro úvodní obrazovku - proč?

Co způsobuje toto chování?

Po vyhledání "chyby" se podíváme na proměnnou priority meta-vrstev. Meta-vrstvy mají proměnnou pro prioritu, která definuje, v jakém pořadí se meta-vrstva používá při bitbakování distribuce Linuxu.

Proměnná se nastavuje v souboru 'meta-interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"
V našem případě byla priorita "meta-interelectronix" nastavena na "6" a priorita "meta-malinpi" je nastavena na "9".

Čím vyšší byla priorita, tím později byly proměnné bbappend souborů aplikovány na bitbake. Stejně jako v 'meta-raspberrypi' je také soubor 'psplash_%.bbappend', proměnné tohoto souboru přepíší přepsání v naší vrstvě 'meta-interelectronix' znovu, nic se nezmění.

Poznámka

Změňte prioritu vlastní meta-vrstvy na vysoké číslo, např. 50, aby se změny později aplikovaly jako všechny přepsání cizích meta-vrstev.

### Jak získat snadné pořadí proměnných?

Existuje jednoduchý příkaz pro získání hodnocení proměnné přes všechny meta-vrstvy:

bitbake-getvar -r recipe VARIABLE

V našem případě byl příkaz:

bitbake-getvar -r psplash SPLASH_IMAGES

Výsledek po změně priority vrstvy "meta-interelectronix" na "50" vypadá takto:

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"

Prioritu použitých vrstev můžete také zobrazit následujícím příkazem:

bitbake-layers show-layers

Licence na autorská práva

Autorská práva © 2022 Interelectronix e.K.
Tento zdrojový kód projektu je licencován pod licencí GPL-3.0.