
Apakah Anda pernah membuat pengambilalihan variabel resep di meta-layer kustom Anda dan tidak ada yang terjadi?
Jangan meragukan diri sendiri dan lihatlah prioritas dari meta-layer yang digunakan.
Contoh
Kami ingin membangun distro Yocto Linux untuk Raspberry Pi 4 dan mengubah image latar belakang resep psplash. Untuk melakukan itu, kami membuat folder 'psplash' di meta-layer kustom kami 'meta-interelectronix' dan menambahkan file 'psplash %.bbappend' untuk mengambilalih variabel 'SPLASH_IMAGES'.
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
Setelah menambahkan 'meta-interelectronix' ke 'bblayers.conf ', kita bangun distro Linux di BitBake, flash ke kartu SD dan boot Raspberry Pi 4 dengan itu.
Tetapi tidak ada image latar belakang kustom untuk layar splash yang digunakan - mengapa demikian?
Apa yang menyebabkan perilaku ini?
Setelah mencari 'kesalahan', kita melihat pada variabel prioritas dari meta-layer. Meta-layer memiliki variabel untuk prioritas guna menentukan pada peringkat mana meta-layer digunakan ketika membangun distro Linux di BitBake.
Variabel diatur dalam berkas 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
Dalam kasus kami, prioritas 'meta-interelectronix' disetel ke '6' dan prioritas 'meta-raspberrypi' disetel ke '9'.
Semakin tinggi prioritas, maka semakin lambat pula variabel file bbappend diterapkan untuk membangun di BitBake. Seperti dalam 'meta-raspberrypi' dan juga file 'psplash_%.bbappend', variabel dari file ini meng-override peng-override di lapisan 'meta-interelectronix' kami lagi, dan tidak ada yang berubah.
Catatan
Ubah prioritas meta-layer kustom Anda ke angka yang tinggi, misalnya 50, untuk menerapkan perubahan Anda nanti sebagai peng-override semua meta-layer asing.
Bagaimana cara mudah untuk mendapatkan peringkat variabel?
Ada perintah mudah untuk mendapatkan peringkat variabel di semua meta-layer:
bitbake-getvar -r recipe VARIABLE
Dalam kasus kami, perintahnya adalah:
bitbake-getvar -r psplash SPLASH_IMAGES
Hasil setelah mengubah prioritas lapisan 'meta-interelectronix' menjadi '50' akan terlihat seperti ini:
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"
Anda juga dapat menampilkan prioritas lapisan yang digunakan dengan perintah berikut:
bitbake-layers show-layers
Lisensi Hak Cipta
Hak Cipta © 2022 Interelectronix e.K.
Kode sumber proyek ini dilisensikan di bawah lisensiGPL-3.0.