Sulautetut ohjelmistot - Yocto-reseptien riippuvuus: kuvakaappaus tietokoneesta

Yocto-reseptien riippuvuudet

Näin saat reseptimuuttujien väliset riippuvuudet

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ä.