
Avez-vous déjà créé une surcharge de variables de recette dans votre méta-couche personnalisée et rien ne se passe ?
Ne doutez pas de vous et jetez un œil à la priorité des méta-couches utilisées.
Exemple
Nous voulons construire une distribution Yocto Linux pour Raspberry Pi 4 et changer l'image d'arrière-plan de la recette psplash. Pour ce faire, nous créons un dossier « psplash » dans notre méta-couche personnalisée « meta-interelectronix » et ajoutons le fichier « psplash_%.bbappend » pour remplacer les variables de « SPLASH_IMAGES ».
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Après avoir ajouté 'meta-interelectronix' à 'bblayers.conf', nous bitbakeons la distribution Linux, flashons-la sur une carte SD et amorçons le Raspberry Pi 4 avec elle.
Mais aucune image de fond personnalisée pour l'écran de démarrage n'a été utilisée - pourquoi cela ?
Qu'est-ce qui cause ce comportement ?
Après avoir recherché l'erreur, nous jetons un coup d'œil à la variable de priorité des méta-couches. Les méta-couches ont une variable pour la priorité à définir dans quel rang la méta-couche est utilisée lors de la création de la distribution Linux.
La variable est définie dans le fichier 'meta-interelectronix/conf/layer.conf' :
BBFILE_PRIORITY_meta-interelectronix = "6"
Dans notre cas, la priorité de 'meta-interelectronix' a été définie sur '6' et la priorité de 'meta-raspberrypi' est définie sur '9'.
Plus la priorité est élevée, plus les variables des fichiers bbappend appliquées à bitbake sont récentes. Comme dans 'meta-raspberrypi' est aussi un fichier 'psplash_%.bbappend', les variables de ce fichier remplacent les substitutions dans notre couche 'meta-interelectronix' à nouveau, un rien change.
Remarque
Changez la priorité de votre méta-couche personnalisée en un nombre élevé, par exemple 50, pour appliquer vos modifications plus tard que toutes les substitutions de méta-couches étrangères.
Comment faciliter le classement des variables ?
Il y a une commande facile pour obtenir le classement d'une variable sur toutes les méta-couches :
bitbake-getvar -r recipe VARIABLE
Dans notre cas, la commande était :
bitbake-getvar -r psplash SPLASH_IMAGES
Le résultat après avoir changé la priorité de la couche 'meta-interelectronix' en '50' ressemble à ceci :
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"
Vous pouvez également afficher la priorité des calques utilisés avec la commande suivante :
bitbake-layers show-layers
Licence de copyright
Copyright © 2022 Interelectronix e.K.
Le code source de ce projet est sous licence GPL-3.0.