Embedded Software - Yocto oppskrifter avhengighet et skjermbilde av en datamaskin

Yocto-oppskrifters avhengigheter

Slik oppnår man avhengigheter mellom oppskriftsvariabler

Oppretter du noen gang en overstyring av oppskriftsvariabler i det egendefinerte metalaget ditt, hvorpå ingenting skjer?

Ikke tvil på deg selv og ta en titt på prioriteringen til de anvendte metalagene.

Eksempel

Vi ønsker å bygge en Yocto Linux-distro for Raspberry Pi 4 og endre psplash-oppskriftens bakgrunnsbilde. For å gjøre dette, oppretter vi en mappe «psplash» i vårt eget egendefinerte metalag «meta-interelectronix» og legger til filen «psplash_%.bbappend» for å overstyre variablene til «SPLASH_IMAGES».

SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

Etter å ha lagt til «meta-interelectronix» i «bblayers.conf», bitbaker vi Linux-distroen, blinker den til et SD-kort og booter Raspberry Pi 4 med denne.

Men det ble ikke brukt noe tilpasset bakgrunnsbilde for splash-skjermen – hvorfor det?

Hva forårsaker denne atferden?

Etter å ha søkt etter «feilen» tar vi en titt på metalagenes prioritetsvariabel. Metalag har en variabel for prioriteten for å definere i hvilken rang metalaget brukes ved bitbaking av Linux-distroen.

Variabelen angis i filen «meta-interelectronix/conf/layer.conf»:

BBFILE_PRIORITY_meta-interelectronix = "6"

I vårt tilfelle ble prioriteten til «meta-interelectronix» angitt til «6» og prioriteten til «meta-raspberrypi» er angitt til «9».

Jo høyere prioritet, desto senere blir variablene i bbappend-filer som ble brukt på bitbake. Siden det i «meta-raspberrypi» også er en «psplash_%.bbappend»-fil, overstyrer variablene i denne filen overstyringene i «meta-interelectronix»-laget igjen, og ingenting endres.

Merknad

Endre det egendefinerte metalagets prioritet til et høyt tall, f.eks. 50, for å bruke endringene senere som alle overstyringer av fremmede metalag.

Hvordan oppnår man enkel rangering av variabler?

Det fins en enkel kommando for å få tak i en variabels rangering over alle metalag:

bitbake-getvar -r recipe VARIABLE

I vårt tilfelle var kommandoen:

bitbake-getvar -r psplash SPLASH_IMAGES

Resultatet etter å ha endret «meta-interelectronix»-lagets prioritet til «50» ser slik ut:

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 til brukte lag med følgende kommando:

bitbake-layers show-layers

Opphavsrettslisens

Copyright © 2022 Interelectronix e.K.
Denne Project-kildekoden er lisensiert under GPL-3.0 -lisensen.