Vdelana programska oprema - odvisnost od receptov Yocto: posnetek zaslona računalnika

Yocto recepti odvisnosti

Kako priti do odvisnosti med spremenljivkami receptov

Ali kdaj ustvarite premostitev spremenljivk receptov v vaši meri meta-plasti in se nič ne zgodi?

Ne dvomite vase in si oglejte prednost uporabljenih meta-plasti.

Primer

Želimo zgraditi Yocto Linux distro za Raspberry Pi 4 in spremeniti ozadje slike psplash recept. Za to ustvarimo mapo "psplash" v naši meta-plasti po meri "meta-interelektronix" in dodamo datoteko "psplash_%.bbappend" za preglasiti spremenljivke "SPLASH_IMAGES".

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

Po dodajanju 'meta-interelectronix' na 'bblayers.conf', bitbake Linux distro, flash na SD kartico in zagon Raspberry Pi 4 z njo.

Vendar ni bila uporabljena nobena slika ozadja po meri za zaslon splash - zakaj to?

Kaj povzroča to vedenje?

Po iskanju "napake" imamo pogled na prednostno spremenljivko meta-plasti. Meta-plasti imajo spremenljivko za prednostno opredelitev, v kateri rang se meta-sloj uporablja pri bitbakingu Linux distro.

Spremenljivka je nastavljena v datoteki "meta-interelectronix/conf/layer.conf":

BBFILE_PRIORITY_meta-interelectronix = "6"
V našem primeru je bila prednostna naloga "meta-interelektroniksa" določena na "6" in prednost "meta-malina" je določena na "9".

Višja kot je bila prioriteta, kasneje so bile spremenljivke datotek bbappend, ki se uporabljajo za bitbake. Kot je v "meta-raspberrypi" tudi "psplash_%.bbappend" datoteko, spremenljivke te datoteke preglasijo preglase v naši "meta-interelektronix" plasti spet, nič se ne spremeni.

Opomba

Spremenite prednost meta-plasti po meri na visoko število, npr.

Kako enostavno razvrstiti spremenljivke?

Obstaja enostaven ukaz, da bi dobili uvrstitev spremenljivke nad vse meta-plasti:

bitbake-getvar -r recipe VARIABLE

V našem primeru je bilo poveljstvo:

bitbake-getvar -r psplash SPLASH_IMAGES

Rezultat po spremembi prednostne vrednosti plasti "meta-interelektronix" na "50" je videti tako:

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"

Prednost uporabljenih plasti lahko prikažete tudi z naslednjim ukazom:

bitbake-layers show-layers

Licenca za avtorske pravice

Copyright © 2022 Interelectronix e.K.
Izvorna koda projekta je licencirana pod licenco GPL-3.0.