
Ați creat vreodată o suprascriere a variabilelor rețetei în meta-stratul personalizat și nu se întâmplă nimic?
Nu vă îndoiți de voi înșivă și aruncați o privire la prioritatea meta-straturilor utilizate.
Exemplu
Vrem să construim o distribuție Yocto Linux pentru Raspberry Pi 4 și să schimbăm imaginea de fundal a rețetei psplash. Pentru a face acest lucru, creăm un folder 'psplash' în meta-stratul nostru personalizat 'meta-interelectronix' și adăugăm fișierul 'psplash_%.bbappend' pentru a suprascrie variabilele 'SPLASH_IMAGES'.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
După ce adăugăm "meta-interelectronix" la "bblayers.conf", bichetăm distribuția Linux, o conectăm pe un card SD și pornim Raspberry Pi 4 cu ea.
Dar nu a fost folosită nicio imagine de fundal personalizată pentru ecranul de pornire - de ce?
Ce cauzează acest comportament?
După căutarea "erorii", aruncăm o privire asupra variabilei prioritare a meta-straturilor. Meta-straturile au o variabilă pentru prioritatea de a defini în ce rang este utilizat meta-stratul atunci când bitbaking distro Linux.
Variabila este setată în fișierul 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
În cazul nostru, prioritatea "meta-interelectronix" a fost setată la "6", iar prioritatea "meta-raspberrypi" este setată la "9".Cu cât prioritatea era mai mare, cu atât mai târziu erau variabilele fișierelor bbappend aplicate bitbake. Ca și în "meta-raspberrypi" este, de asemenea, un fișier "psplash_%.bbappend", variabilele acestui fișier suprascriu suprascrierile din stratul nostru "meta-interelectronix" din nou, nimic nu se schimbă.
Notă
Modificați prioritatea metastratului personalizat la un număr mare, de ex. 50, pentru a aplica modificările ulterior, ca suprareglări ale metastraturilor străine.
Există o comandă ușoară pentru a obține clasarea unei variabile pe toate meta-straturile:
bitbake-getvar -r recipe VARIABLE
În cazul nostru, comanda a fost:
bitbake-getvar -r psplash SPLASH_IMAGES
Rezultatul după schimbarea priorității stratului "meta-interelectronix" la "50" arată astfel:
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"
De asemenea, puteți afișa prioritatea straturilor utilizate cu următoarea comandă:
bitbake-layers show-layers
Licență pentru drepturi de autor
Copyright © 2022 Interelectronix e.K.
Acest cod sursă al Proiectului este licențiat sub licența GPL-3.0.