Ingeboude sagteware - Yocto resepte afhanklikheid 'n skermkiekie van 'n rekenaar

Yocto resepte afhanklikhede

Hoe om afhanklikhede tussen resepveranderlikes te kry

Skep jy ooit 'n oorskryding van resepveranderlikes in jou pasgemaakte metalaag en niks gebeur nie?

Moenie aan jouself twyfel nie en kyk na die prioriteit van die gebruikte metalae.

Voorbeeld

Ons wil 'n Yocto Linux-distro vir Raspberry Pi 4 bou en die agtergrondprent van psplash-resep verander. Om dit te kan doen, skep ons 'n lêergids 'psplash' in ons pasgemaakte metalaag 'meta-interelectronix' en voeg die lêer 'psplash_%.bbappend' by om die veranderlikes van 'SPLASH_IMAGES' te ignoreer.

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

Nadat ons 'meta-interelectronix' by 'bblayers.conf' gevoeg het, byt ons die Linux-distro, flits dit na 'n SD-kaart en begin die Raspberry Pi 4 daarmee.

Maar geen pasgemaakte agtergrondprent vir die spatskerm is gebruik nie - hoekom dit?

Wat veroorsaak hierdie gedrag?

Nadat ons na die 'fout' gesoek het, kyk ons na die prioriteitsveranderlike van die metalae. Meta-lae het 'n veranderlike vir die prioriteit om te definieer in watter rang die metalaag gebruik word wanneer die Linux-distro gebyt word.

Die veranderlike word in die lêer 'meta-interelectronix/conf/layer.conf' gestel:

BBFILE_PRIORITY_meta-interelectronix = "6"
In ons geval is die prioriteit van 'meta-interelectronix' op '6' gestel en die prioriteit van 'meta-raspberrypi' is op '9' gestel.

Hoe hoër die prioriteit, hoe later was die veranderlikes van bbappend-lêers wat op bitbake toegepas is. Soos in 'meta-raspberrypi' ook 'n 'psplash_%.bbappend'-lêer is, oorheers die veranderlikes van hierdie lêer weer die oorskrydings in ons 'meta-interelectronix'-laag, 'n niks verander nie.

Nota

Verander die prioriteit van u aangepaste metalaag na 'n hoë getal, byvoorbeeld 50, om u veranderinge later toe te pas, aangesien alle oorskrydings van vreemde metalae.

### Hoe kan u die rangorde van veranderlikes maklik kry?

Daar is 'n maklike opdrag om die rangorde van 'n veranderlike oor alle metalae te kry:

bitbake-getvar -r recipe VARIABLE

In ons geval was die opdrag:

bitbake-getvar -r psplash SPLASH_IMAGES

Die resultaat na die verandering van die prioriteit van 'meta-interelectronix' laag na '50' lyk soos volg:

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 kan ook die prioriteit van die gebruikte lae toon met die volgende opdrag:

bitbake-layers show-layers

Kopiereg lisensie

Kopiereg © 2022 Interelectronix e.K.
Hierdie projekbronkode is gelisensieer onder die GPL-3.0 lisensie.