
هل قمت من قبل بإنشاء تجاوز لمتغيرات الوصفة في الطبقة الوصفية المخصصة الخاصة بك ولم يحدث شيء؟
لا تشكك في نفسك وألق نظرة على أولوية الطبقات الوصفية المستخدمة.
مثال
نريد بناء جهاز استدعاء 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'، مع تكوين Linux distro، ونومضه إلى بطاقة SD ونمهد Raspberry Pi 4 به.
ولكن لم يتم استخدام صورة خلفية مخصصة لشاشة البداية - لماذا ذلك؟
ما الذي يسبب هذا السلوك؟
بعد البحث عن "الخطأ "، سنلقي نظرة على متغير الأولوية للطبقات الوصفية. تحتوي الطبقات الوصفية على متغير للأولوية لتحديد الترتيب الذي يتم فيه استخدام الطبقة الوصفية عند تكون توزيع Linux.يتم تعيين المتغير في الملف 'meta-interelectronix/conf/layer.conf':
BBFILE_PRIORITY_meta-interelectronix = "6"
في حالتنا، تم تعيين أولوية 'meta-interelectronix' على '6' وتم تعيين أولوية 'meta-raspberrypi' على '9'.
كلما كانت الأولوية أعلى، كانت متغيرات ملفات bbappend تنطبق على التكوين. كما هو الحال في '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 Interelectronixe.K.
رمز مصدر المشروع هذا مرخص بموجب ترخيص** GPL-3.0 **.