ایمبیڈڈ سافٹ ویئر - یوکٹو کی ترکیبیں کمپیوٹر کے اسکرین شاٹ پر انحصار کرتی ہیں

Yocto کی تراکیب کا انحصار

ترکیب کے متغیرات کے درمیان انحصار کیسے حاصل کیا جائے

کیا آپ نے کبھی حسب منشاء میٹا لیئر میں ترکیب کے متغیرات کو اوور رائڈ بنایا اور کچھ نہیں ہوا؟

خود پر شک نہ کریں اور استعمال شدہ میٹا لیئرز کی ترجیح پر ایک نظر ڈالیں۔

مثال

ہم Raspberry Pi 4 کے لیے Yocto Linux distro بنانا چاہتے ہیں اور psplash ترکیب کے پس منظر امیج کو تبدیل کرنا چاہتے ہیں۔ ایسا کرنے کے لیے، ہم اپنی حسب منشاء میٹا لیئر 'meta-interelectronix' میں ایک فولڈر 'psplash' بناتے ہیں اور 'SPLASH_IMAGES' کے متغیرات کو اوور رائیڈ کرنے کے لیے 'psplash_%.bbappend' فائل شامل کرتے ہیں۔

SPLASH_IMAGES:rpi = "file://psplash-ixlogo-white-img.h;outsuffix=raspberrypi"

'meta-interelectronix' کو 'bblayers.conf' میں شامل کرنے کے بعد، ہم Linux ڈسٹرو کو بٹ بیک کرتے ہیں، اسے SD کارڈ پر فلیش کرتے ہیں اور اس کے ساتھ Raspberry Pi 4 کو بوٹ کرتے ہیں۔

لیکن سپلیش اسکرین کے لیے کوئی حسب ضرورت پس منظر کا امیج استعمال نہیں کیا گیا - ایسا کیوں؟

اس رویے کی وجہ کیا ہے؟

'error' تلاش کرنے کے بعد، ہم نے میٹا لیئرز کے ترجیحی متغیر پر ایک نظر ڈالی ہے۔ میٹا لیئرز میں ترجیح کے لیے ایک متغیر ہوتا ہے کہ 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 Interelectronix eKاس پروجیکٹ کا سورس کوڈ GPL-3.0 لائسنس کے تحت لائسنس یافتہ ہے۔