Skip to main content
Vstavaný softvér - závislosť od receptov Yocto, snímka obrazovky počítača

Závislosti receptov Yocto

Ako získať závislosti medzi premennými receptu

Vytvorili ste niekedy prepísanie premenných receptov vo vlastnej metavrstve a nič sa nestane?

Nepochybujte o sebe a pozrite sa na prioritu použitých metavrstiev.

Príklad

Chceme vytvoriť distribúciu Yocto Linux pre Raspberry Pi 4 a zmeniť obrázok na pozadí receptu psplash. Aby sme to dosiahli, vytvoríme priečinok 'psplash' v našej vlastnej meta-vrstve 'meta-interelectronix' a pridáme súbor 'psplash_%.bbappend', aby sme prepísali premenné 'SPLASH_IMAGES'.

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

Po pridaní 'meta-interelectronix' do 'bblayers.conf' bitbaujeme distribúciu Linuxu, flashujeme ju na SD kartu a zavádzame s ňou Raspberry Pi 4.

Ale nebol použitý žiadny vlastný obrázok na pozadí pre úvodnú obrazovku - prečo?

Čo spôsobuje toto správanie?

Po vyhľadaní "chyby" sa pozrieme na prioritnú premennú metavrstiev. Metavrstvy majú premennú pre prioritu definovať, v akom poradí sa meta-vrstva použije pri bitbakingu distribúcie Linuxu.

Premenná sa nastaví v súbore 'meta-interelectronix/conf/layer.conf':

BBFILE_PRIORITY_meta-interelectronix = "6"

V našom prípade bola priorita "meta-interelectronixu" stanovená na "6" a priorita "meta-raspberrypi" je stanovená na "9".

Čím vyššia bola priorita, tým neskôr boli premenné súborov bbappend aplikované na bitbake. Keďže v "meta-raspberrypi" je tiež súbor "psplash_%.bbappend", premenné tohto súboru opäť prepisujú prepisy v našej vrstve "meta-interelectronix", nič sa nemení.

Nota

Zmeňte prioritu vlastnej metavrstvy na vysoké číslo, napr. 50, aby ste zmeny použili neskôr ako všetky prepísania cudzích metavrstiev.

### Ako ľahko získať poradie premenných?

Existuje jednoduchý príkaz na získanie poradia premennej vo všetkých meta-vrstvách:

bitbake-getvar -r recipe VARIABLE

V našom prípade príkaz bol:

bitbake-getvar -r psplash SPLASH_IMAGES

Výsledok po zmene priority vrstvy "meta-interelectronix" na "50" vyzerá takto:

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

Prioritu použitých vrstiev môžete zobraziť aj nasledujúcim príkazom:

bitbake-layers show-layers

Licencia na autorské práva

Copyright © 2022 Interelectronix e.K.
Tento zdrojový kód Projectu je licencovaný pod licenciou GPL-3.0.