Vstavaný softvér - závislosť od receptov Yocto, snímka obrazovky počítača

Závislosti receptov Yocto

Ako získať závislosti medzi premennými receptu

Vytvorili ste niekedy prepísanie premenných receptov vo vlastnej metavrstve a nič sa nestane?

Nepochybujte o sebe a pozrite sa na prioritu použitých metavrstiev.

Príklad

Chceme vytvoriť distribúciu Yocto Linux pre Raspberry Pi 4 a zmeniť obrázok na pozadí receptu psplash. Aby sme to dosiahli, vytvoríme priečinok 'psplash' v našej vlastnej meta-vrstve 'meta-interelectronix' a pridáme súbor 'psplash_%.bbappend', aby sme prepísali premenné 'SPLASH_IMAGES'.

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

Po pridaní 'meta-interelectronix' do 'bblayers.conf' bitbaujeme distribúciu Linuxu, flashujeme ju na SD kartu a zavádzame s ňou Raspberry Pi 4.

Ale nebol použitý žiadny vlastný obrázok na pozadí pre úvodnú obrazovku - prečo?

Čo spôsobuje toto správanie?

Po vyhľadaní "chyby" sa pozrieme na prioritnú premennú metavrstiev. Metavrstvy majú premennú pre prioritu definovať, v akom poradí sa meta-vrstva použije pri bitbakingu distribúcie Linuxu.

Premenná sa nastaví v súbore 'meta-interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"
V našom prípade bola priorita "meta-interelectronixu" stanovená na "6" a priorita "meta-raspberrypi" je stanovená na "9".

Čím vyššia bola priorita, tým neskôr boli premenné súborov bbappend aplikované na bitbake. Keďže v "meta-raspberrypi" je tiež súbor "psplash_%.bbappend", premenné tohto súboru opäť prepisujú prepisy v našej vrstve "meta-interelectronix", nič sa nemení.

Nota

Zmeňte prioritu vlastnej metavrstvy na vysoké číslo, napr. 50, aby ste zmeny použili neskôr ako všetky prepísania cudzích metavrstiev.

### Ako ľahko získať poradie premenných?

Existuje jednoduchý príkaz na získanie poradia premennej vo všetkých meta-vrstvách:

bitbake-getvar -r recipe VARIABLE

V našom prípade príkaz bol:

bitbake-getvar -r psplash SPLASH_IMAGES

Výsledok po zmene priority vrstvy "meta-interelectronix" na "50" vyzerá 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 vrstiev môžete zobraziť aj nasledujúcim príkazom:

bitbake-layers show-layers

Licencia na autorské práva

Copyright © 2022 Interelectronix e.K.
Tento zdrojový kód Projectu je licencovaný pod licenciou GPL-3.0.