
คุณเคยสร้างการแทนที่ตัวแปรสูตรในเลเยอร์เมตาที่กําหนดเองของคุณและไม่มีอะไรเกิดขึ้นหรือไม่?
อย่าสงสัยตัวเองและดูลําดับความสําคัญของเลเยอร์เมตาที่ใช้แล้ว
ตัวอย่าง
เราต้องการสร้าง Yocto Linux distro สําหรับ Raspberry Pi 4 และเปลี่ยนภาพพื้นหลังของสูตร psplash ในการทําเช่นนั้นเราสร้างโฟลเดอร์ 'psplash' ในเมตาเลเยอร์ที่กําหนดเองของเรา 'meta-interelectronix' และเพิ่มไฟล์ 'psplash_%.bbappend' เพื่อแทนที่ตัวแปรของ 'SPLASH_IMAGES'
SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"
หลังจากเพิ่ม 'meta-interelectronix' ลงใน 'bblayers.conf' เรา bitbake Linux distro แฟลชไปยังการ์ด SD และบูต Raspberry Pi 4 ด้วย
แต่ไม่มีการใช้ภาพพื้นหลังที่กําหนดเองสําหรับหน้าจอสแปลช - ทําไม?
อะไรทําให้เกิดพฤติกรรมนี้?
หลังจากค้นหา 'ข้อผิดพลาด' เราจะดูตัวแปรลําดับความสําคัญของเลเยอร์เมตา Meta-layers มีตัวแปรสําหรับลําดับความสําคัญในการกําหนดอันดับที่ใช้ meta-layer เมื่อ bitbaking Linux distro
ตัวแปรถูกตั้งค่าในไฟล์ 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
ในกรณีของเราลําดับความสําคัญของ 'meta-interelectronix' ถูกตั้งค่าเป็น '6' และลําดับความสําคัญของ 'meta-raspberrypi' ถูกตั้งค่าเป็น '9'ยิ่งลําดับความสําคัญสูงเท่าใดตัวแปรของไฟล์ bbappend ที่ใช้กับ bitbake ก็ยิ่งมากขึ้นเท่านั้น เช่นเดียวกับใน 'meta-raspberrypi' ยังเป็นไฟล์ 'psplash_%.bbappend' ตัวแปรของไฟล์นี้จะแทนที่การแทนที่ในเลเยอร์ 'meta-interelectronix' ของเราอีกครั้งไม่มีอะไรเปลี่ยนแปลง
โน้ต
เปลี่ยนลําดับความสําคัญของเลเยอร์เมตาที่กําหนดเองของคุณเป็นตัวเลขสูง เช่น 50 เพื่อใช้การเปลี่ยนแปลงของคุณในภายหลังเป็นการแทนที่เลเยอร์เมตาต่างประเทศทั้งหมด
มีคําสั่งง่ายๆในการรับการจัดอันดับของตัวแปรเหนือชั้นเมตาทั้งหมด:
bitbake-getvar -r recipe VARIABLE
ในกรณีของเราคําสั่งคือ:
bitbake-getvar -r psplash SPLASH_IMAGES
ผลลัพธ์หลังจากเปลี่ยนลําดับความสําคัญของเลเยอร์ 'meta-interelectronix' เป็น '50' มีลักษณะดังนี้:
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"
คุณยังสามารถแสดงลําดับความสําคัญของเลเยอร์ที่ใช้ด้วยคําสั่งต่อไปนี้:
bitbake-layers show-layers
ใบอนุญาตลิขสิทธิ์
ลิขสิทธิ์ © 2022 Interelectronix e.K.
ซอร์สโค้ดของโครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต GPL-3.0