
Crei mai un override di variabili di ricetta nel tuo meta-layer personalizzato e non succede nulla?
Non dubitate di te stesso e dai un'occhiata alla priorità dei meta-layer usati.
Esempio
Vogliamo costruire una distribuzione Yocto Linux per Raspberry Pi 4 e cambiare l'immagine di sfondo della ricetta psplash. Per fare ciò, creiamo una cartella 'psplash' nel nostro meta-layer personalizzato 'meta-interelectronix' e aggiungiamo il file 'psplash_%.bbappend' per sovrascrivere le variabili di 'SPLASH_IMAGES'.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Dopo aver aggiunto 'meta-interelectronix' a 'bblayers.conf', abbiamo effettuato il bitbake sulla distribuzione Linux, trasmessa su una scheda SD e avviato il Raspberry Pi 4.
Ma non è stata utilizzata alcuna immagine di sfondo personalizzata per la schermata iniziale - perché?
## Quali sono le cause di questo comportamento?
Dopo aver cercato l '' errore ', diamo un'occhiata alla variabile di priorità dei meta-layer. I meta-layer hanno una variabile per la priorità per definire in quale rango il meta-layer viene utilizzato quando si esegue il bitbaking della distribuzione Linux.
La variabile è impostata nel file 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
Nel nostro caso, la priorità di 'meta-interelectronix' è stata impostata su '6' e la priorità di 'meta-raspberrypi' è impostata su '9'.
Più alta è la priorità, più tardi sono arrivate le variabili dei file bbappend applicati a bitbake. Come in 'meta-raspberrypi' c'è anche un file 'psplash_% .bbappend', le variabili di questo file sovrascrivono di nuovo le sostituzioni nel nostro livello 'meta-interelectronix', e nulla cambia.
Nota:
Modifica la priorità del meta-layer personalizzato a un numero elevato, ad esempio 50, per applicare le modifiche in seguito come tutte le sostituzioni di meta-layer esterni.
Come facilitare la classifica delle variabili?
C'è un semplice comando per ottenere la classifica di una variabile su tutti i meta-layer:
bitbake-getvar -r recipe VARIABLE
Nel nostro caso, il comando era:
bitbake-getvar -r psplash SPLASH_IMAGES
Il risultato dopo aver modificato la priorità del livello 'meta-interelectronix' in '50' è simile al seguente:
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"
È anche possibile mostrare la priorità dei livelli utilizzati con il seguente comando:
bitbake-layers show-layers
Licenza sul diritto d'autore
Copyright © 2022 Interelectronix e.K.
Questo codice sorgente del Progetto è concesso in licenza sotto la licenza **GPL-3.0 * *.