
Stvarate li ikada nadjačavanje varijabli recepata u prilagođenom meta-sloju i ništa se ne događa?
Ne sumnjajte u sebe i pogledajte prioritet korištenih meta-slojeva.
Primjer
Želimo izgraditi Yocto Linux distro za Raspberry Pi 4 i promijeniti pozadinsku sliku recepta za psplash. Da bismo to učinili, stvaramo mapu 'psplash' u našem prilagođenom meta-sloju 'meta-interelectronix' i dodajemo datoteku 'psplash_%.bbappend' kako bismo nadjačali varijable 'SPLASH_IMAGES'.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Nakon dodavanja 'meta-interelectronix' u 'bblayers.conf', bitbake Linux distribuciju, bljesnemo je na SD karticu i s njom pokrenemo Raspberry Pi 4.
Ali nije korištena prilagođena pozadinska slika za početni zaslon - zašto to?
Što uzrokuje takvo ponašanje?
Nakon traženja 'pogreške', pogledamo prioritetnu varijablu meta-slojeva. Meta-slojevi imaju varijablu za prioritet kako bi se definiralo u kojem se rangu meta-sloj koristi prilikom bitpečenja Linux distribucije.
Varijabla je postavljena u datoteci "meta-interelectronix/conf/layer.conf":
BBFILE_PRIORITY_meta-interelectronix = "6"
U našem slučaju prioritet "meta-interelektronix" postavljen je na "6", a prioritet "meta-malina" na "9".Što je veći prioritet, kasnije su bile varijable bbappend datoteka primijenjenih na bitbake. Budući da je u 'meta-raspberrypi' također datoteka 'psplash_%.bbappend', varijable ove datoteke ponovno nadjačavaju nadjačavanja u našem 'meta-interelectronix' sloju, ništa se ne mijenja.
Bilješka
Promijenite prioritet prilagođenog metasloja na velik broj, npr. 50, kako biste kasnije primijenili promjene kao i sva nadjačavanja stranih metaslojeva.
Postoji jednostavna naredba za rangiranje varijable u svim meta-slojevima:
bitbake-getvar -r recipe VARIABLE
U našem slučaju, naredba je bila:
bitbake-getvar -r psplash SPLASH_IMAGES
Rezultat nakon promjene prioriteta sloja "meta-interelektronix" u "50" izgleda ovako:
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"
Prioritet korištenih slojeva možete prikazati i sljedećom naredbom:
bitbake-layers show-layers
Licenca za autorska prava
Autorska prava © 2022. Interelectronix e.K.
Ovaj izvorni kod projekta licenciran je pod licencom GPL-3.0.