
Oletko joskus luonut reseptin muuttujien ohituksen mukautetussa metakerroksessa, eikä mitään ole tapahtunut?
Älä epäile itseäsi, vaan katso käytettyjen metakerrosten prioriteettia.
Esimerkki
Haluamme rakentaa Yocto Linux -jakelun Raspberry Pi 4:lle ja vaihtaa psplash-reseptin taustakuvan. Tätä varten luomme kansion 'psplash' mukautetussa metakerroksessa 'meta-interelectronix' ja lisäämme tiedoston 'psplash_%.bbappend' ohittaaksemme kohteen 'SPLASH_IMAGES' muuttujat.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Lisättyämme kohteen 'meta-interelectronix' kohteeseen 'bblayers.conf' suoritamme BitBakella Linux-jakelun, flashaamme sen SD-kortille ja käynnistämme Raspberry Pi 4:n sen kanssa.
Mutta Splash-näytölle ei käytetty mukautettua taustakuvaa, miksi ?
Mikä aiheuttaa tämän käytöksen?
Etsittyämme "virhettä" voimme tarkastella metakerrosten prioriteettimuuttujaa. Metakerroksilla on prioriteettimuuttuja, joka määrittää, missä järjestyksessä metakerrosta käytetään Linux-jakelua BitBakella suoritettaessa.
Muuttuja määritetään tiedostossa 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
Meidän tapauksessamme kohteen 'meta-interelectronix' prioriteetiksi määritettiin '6' ja kohteen 'meta-raspberrypi' prioriteetiksi '9'.
Mitä korkeampi prioriteetti on, sitä myöhemmin bbappend-tiedostojen muuttujia sovellettiin BitBakeen. Kuten myös kohteessa 'meta-raspberrypi' on 'psplash_%.bbappend' -tiedosto, tämän tiedoston muuttujat ohittavat jälleen 'meta-interelectronix' -kerroksessamme olevat ohitukset, eikä mikään muutu.
Huomaa
Vaihda mukautetun metakerroksen prioriteetti suureksi, esim. 50:ksi, soveltaaksesi muutoksia myöhemmin kaikkien vieraiden metakerrosten ohituksina.
Miten saada muuttujien järjestys helposti?
On olemassa helppo komento, jolla saadaan muuttujan järjestys kaikille metakerroksille:
bitbake-getvar -r recipe VARIABLE
Meidän tapauksessamme komento oli:
bitbake-getvar -r psplash SPLASH_IMAGES
Tulos sen jälkeen, kun 'meta-interelectronix' -tason prioriteetti on muutettu '50':ksi, näyttää tältä:
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"
Voit myös näyttää käytettyjen tasojen prioriteetin seuraavalla komennolla:
bitbake-layers show-layers
Tekijänoikeuslisenssi
Copyright © 2022 Interelectronix e.K.
Tämän projektin lähdekoodi on lisensoitu **GPL-3.0 ** -lisenssillä.