
Előfordult már, hogy receptváltozók felülbírálását hozta létre az egyéni metarétegben, és semmi sem történik?
Ne kételkedj magadban, és nézd meg a használt metarétegek prioritását.
Példa
Szeretnénk építeni egy Yocto Linux disztribúciót a Raspberry Pi 4-hez, és megváltoztatni a psplash recept háttérképét. Ehhez létrehozunk egy "psplash" mappát az egyéni "meta-interelectronix" metarétegünkben, és hozzáadjuk a "psplash_%.bbappend" fájlt az "SPLASH_IMAGES" változóinak felülbírálásához.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Miután hozzáadtuk a "meta-interelectronix" -ot a "bblayers.conf" -hoz, bitbak a Linux disztribúciót, flasheljük egy SD-kártyára, és elindítjuk vele a Raspberry Pi 4-et.
De nem használtak egyéni háttérképet a kezdőképhez - miért?
Mi okozza ezt a viselkedést?
A "hiba" keresése után megnézzük a metarétegek prioritási változóját. A metarétegeknek van egy változója a prioritáshoz, amely meghatározza, hogy a metaréteget melyik rangsorban használják a Linux disztribúció bitsütéséhez.
A változó a 'meta-interelectronix/conf/layer.conf' fájlban van beállítva:
BBFILE_PRIORITY_meta-interelectronix = "6"
Esetünkben a "meta-interelectronix" prioritását "6"-ra, a "meta-raspberrypi" prioritását pedig "9"-re állítottuk be.Minél magasabb volt a prioritás, annál később voltak a bitbake-re alkalmazott bbappend fájlok változói. Mivel a 'meta-raspberrypi' is egy 'psplash_%.bbappend' fájl, ennek a fájlnak a változói ismét felülírják a 'meta-interelectronix' rétegünk felülbírálásait, semmi sem változik.
Jegyzet
Módosítsa az egyéni metaréteg prioritását nagy számra, például 50-re, hogy a módosításokat később az idegen metarétegek összes felülbírálásaként alkalmazhassa.
Van egy egyszerű parancs egy változó rangsorolására az összes metarétegen:
bitbake-getvar -r recipe VARIABLE
Esetünkben a parancs a következő volt:
bitbake-getvar -r psplash SPLASH_IMAGES
Az eredmény, miután a "meta-interelektronix" réteg prioritását "50" -re változtatta, így néz ki:
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"
A használt fóliák prioritását a következő paranccsal is megjelenítheti:
bitbake-layers show-layers
Szerzői jogi licenc
Copyright © 2022 Interelectronix e.K.
Ez a Project forráskód a GPL-3.0 licenc alatt van licencelve.