Embedded Software - Yocto recepten afhankelijkheid een screenshot van een computer

Afhankelijkheden Yocto-recepten

Hoe afhankelijkheden tussen receptvariabelen te krijgen

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.