
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.
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.