Beágyazott szoftver - Yocto receptek függőség, egy számítógép képernyőképe

Yocto receptek függőségei

A receptváltozók közötti függőségek lekérése

Előfordult már, hogy receptváltozók felülbírálását hozta létre az egyéni metarétegben, és semmi sem történik?

Ne kételkedj magadban, és nézd meg a használt metarétegek prioritását.

Példa

Szeretnénk építeni egy Yocto Linux disztribúciót a Raspberry Pi 4-hez, és megváltoztatni a psplash recept háttérképét. Ehhez létrehozunk egy "psplash" mappát az egyéni "meta-interelectronix" metarétegünkben, és hozzáadjuk a "psplash_%.bbappend" fájlt az "SPLASH_IMAGES" változóinak felülbírálásához.

SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

Miután hozzáadtuk a "meta-interelectronix" -ot a "bblayers.conf" -hoz, bitbak a Linux disztribúciót, flasheljük egy SD-kártyára, és elindítjuk vele a Raspberry Pi 4-et.

De nem használtak egyéni háttérképet a kezdőképhez - miért?

Mi okozza ezt a viselkedést?

A "hiba" keresése után megnézzük a metarétegek prioritási változóját. A metarétegeknek van egy változója a prioritáshoz, amely meghatározza, hogy a metaréteget melyik rangsorban használják a Linux disztribúció bitsütéséhez.

A változó a 'meta-interelectronix/conf/layer.conf' fájlban van beállítva:

BBFILE_PRIORITY_meta-interelectronix = "6"
Esetünkben a "meta-interelectronix" prioritását "6"-ra, a "meta-raspberrypi" prioritását pedig "9"-re állítottuk be.

Minél magasabb volt a prioritás, annál később voltak a bitbake-re alkalmazott bbappend fájlok változói. Mivel a 'meta-raspberrypi' is egy 'psplash_%.bbappend' fájl, ennek a fájlnak a változói ismét felülírják a 'meta-interelectronix' rétegünk felülbírálásait, semmi sem változik.

Jegyzet

Módosítsa az egyéni metaréteg prioritását nagy számra, például 50-re, hogy a módosításokat később az idegen metarétegek összes felülbírálásaként alkalmazhassa.

### Hogyan lehet megkönnyíteni a változók rangsorolását?

Van egy egyszerű parancs egy változó rangsorolására az összes metarétegen:

bitbake-getvar -r recipe VARIABLE

Esetünkben a parancs a következő volt:

bitbake-getvar -r psplash SPLASH_IMAGES

Az eredmény, miután a "meta-interelektronix" réteg prioritását "50" -re változtatta, így néz ki:

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"

A használt fóliák prioritását a következő paranccsal is megjelenítheti:

bitbake-layers show-layers

Szerzői jogi licenc

Copyright © 2022 Interelectronix e.K.
Ez a Project forráskód a GPL-3.0 licenc alatt van licencelve.