
Creëert u ooit een overschrijving van receptvariabelen in uw aangepaste meta-layer en gebeurt er niets?
Twijfel niet aan uzelf en bekijk de prioriteit van de gebruikte meta-layers.
Voorbeeld
We willen een Yocto Linux-distributie voor Raspberry Pi 4 bouwen en de achtergrondafbeelding van het psplash-recept wijzigen. Om dat te doen, maken we een map 'psplash' aan in onze aangepaste meta-layer 'meta-interelectronix' en voegen we het bestand 'psplash_%.bbappend' toe om de variabelen van 'SPLASH_IMAGES' te overschrijven.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Na het toevoegen van 'meta-interelectronix' aan 'bblayers.conf', bitbakken we de Linux-distributie, flashen het naar een SD-kaart en booten de Raspberry Pi 4 ermee op.
Maar er is geen aangepaste achtergrondafbeelding voor het splashscherm gebruikt - waarom is dat?
Wat veroorzaakt dit gedrag?
Na het zoeken naar de 'error', bekijken we de prioriteitsvariabele van de meta-layers. Meta-layers hebben een variabele voor de prioriteit om te definiëren in welke rang de meta-layer wordt gebruikt bij het bitbakken van de Linux-distributie.
De variabele wordt ingesteld in het bestand 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
In ons geval werd de prioriteit van 'meta-interelectronix' ingesteld op '6' en de prioriteit van 'meta-raspberrypi' op '9'.
Hoe hoger de prioriteit, hoe later werden de variabelen van bbappend-bestanden toegepast op bitbake. Zoals er in'meta-raspberrypi' ook een 'psplash_%.bbappend'-bestand is, de variabelen van dit bestand overschrijven de overrides in onze 'meta-interelectronix'-laag weer, en niets verandert.
Opmerking
Wijzig de prioriteit van uw aangepaste meta-layer naar een hoog getal, bijvoorbeeld 50, om uw wijzigingen later toe te passen als alle overschrijvingen van vreemde meta-layers.
Hoe gemakkelijk de rangschikking van variabelen te krijgen?
Er is een eenvoudige opdracht om de rangschikking van een variabele over alle meta-layers te krijgen:
bitbake-getvar -r recipe VARIABLE
In ons geval was de opdracht:
bitbake-getvar -r psplash SPLASH_IMAGES
Het resultaat na het wijzigen van de prioriteit van de laag 'meta-interelectronix' naar '50' ziet er als volgt uit:
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"
U kunt ook de prioriteit van de gebruikte lagen weergeven met het volgende commando:
bitbake-layers show-layers
Auteursrechtlicentie
Copyright © 2022 Interelectronix e.K.
Deze broncode van het project is gelicentieerd onder de GPL-3.0 licentie.