Software incorporato - Yocto ricette dipendenza uno screenshot di un computer

Dipendenza delle ricette Yocto

Come ottenere le dipendenze tra le variabili della ricetta

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