
Opretter du nogensinde en tilsidesættelse af opskriftsvariabler i dit brugerdefinerede metalag, og der ikke sker noget?
Tvivl ikke på dig selv og se på prioriteringen af de brugte meta-lag.
Eksempel
Vi ønsker at bygge en Yocto Linux-distro til Raspberry Pi 4 og ændre baggrundsbilledet af psplash opskriften. For at gøre det, opretter vi en mappe "psplash" i vores brugerdefinerede metalag "meta-interelectronix" og tilføjer filen "psplash_%.bbappend" for at tilsidesætte variablerne for "SPLASH_IMAGES".
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Efter at have tilføjet 'meta-interelectronix' til 'bblayers.conf', bitbaker vi Linux-distro, flasher det til et SD-kort og starter Raspberry Pi 4 med det.
Men der blev ikke brugt noget brugerdefineret baggrundsbillede til splash-skærmen - hvorfor det?
Hvad forårsager denne adfærd?
Efter at have søgt efter 'fejlen' har vi kigget på metalagrenes prioritetsvariabel. Metalag har en variabel for prioriteten i at definere, i hvilken rang metalaget bruges, når bitbaking Linux-distroen.
Variablen angives i filen 'meta-interelectronix/conf/lag.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
I vores tilfælde blev prioriteten for 'meta-interelectronix' sat til '6', og prioriteten for 'meta-raspberrypi' er sat til '9'.
Jo højere prioritet, jo senere blev variablerne i bbappend-filerne anvendt på bitbake. Som i 'meta-raspberrypi' også er en 'psplash_%.bbappend' filen, tilsidesætter variablerne i denne fil tilsidesættelserne i vores 'meta-interelectronix' lag igen, og intet ændrer.
Bemærkning
Ændre prioriteten for din brugerdefinerede metalag til et højt tal, f.eks. 50, for at anvende dine ændringer senere som alle tilsidesættelser af fremmede metalag.
Hvordan får man let rangeret rækkefølgen af variabler?
Der er en nem kommando for at få rangeringen af en variabel over alle metalag:
bitbake-getvar -r recipe VARIABLE
I vores tilfælde var kommandoen:
bitbake-getvar -r psplash SPLASH_IMAGES
Resultatet efter ændring af prioriteten for 'meta-interelectronix'-laget til '50' ser sådan ud:
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"
Du kan også vise prioriteten for de brugte lag med følgende kommando:
bitbake-layers show-layers
Ophavsretslicens
Copyright © 2022 Interelectronix e.K.
Denne projektkildekode er licenseret under GPL-3.0-licensen.