
האם אי פעם יצרתם עקיפה של משתני מתכון בשכבת המטא המותאמת אישית שלכם ושום דבר לא קורה?
אל תפקפקו בעצמכם ותסתכלו על העדיפות של שכבות המטא המשומשות.
דוגמה
אנחנו רוצים לבנות הפצה של Yocto Linux עבור 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 את לינוקס distro, פלאש אותו לכרטיס SD ואתחול Raspberry Pi 4 עם זה.
אך לא נעשה שימוש בתמונת רקע מותאמת אישית עבור מסך הפתיחה - מדוע?
מה גורם להתנהגות זו?
לאחר חיפוש ה'שגיאה', יש לנו מבט על משתנה העדיפות של שכבות העל. למטא-שכבות יש משתנה עבור העדיפות להגדיר באיזה דירוג משתמשים במטא-שכבה בעת אפיית סיביות של הפצת לינוקס.
המשתנה מוגדר בקובץ 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
במקרה שלנו, העדיפות של 'מטא-אינטראלקטרוניקס' נקבעה ל-'6' והעדיפות של 'מטא-פטל' נקבעה ל-'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*.