এমবেডেড সফ্টওয়্যার - ইয়োক্টো রেসিপি নির্ভরতা একটি কম্পিউটারের স্ক্রিনশট

Yocto রেসিপি নির্ভরতা

রেসিপি ভেরিয়েবলের মধ্যে নির্ভরতা কীভাবে পেতে হয়

আপনি কি কখনও আপনার কাস্টম মেটা-লেয়ারে রেসিপি ভেরিয়েবলের একটি ওভাররাইড তৈরি করেন এবং কিছুই ঘটে না?

নিজেকে সন্দেহ করবেন না এবং ব্যবহৃত মেটা-স্তরগুলির অগ্রাধিকার দেখুন।

উদাহরণ

আমরা Raspberry Pi 4 এর জন্য একটি Yocto Linux ডিস্ট্রো তৈরি করতে চাই এবং psplash রেসিপির ব্যাকগ্রাউন্ড চিত্র পরিবর্তন করতে চাই। এটি করার জন্য, আমরা আমাদের কাস্টম মেটা-লেয়ার 'meta-interelectronix'-এ একটি ফোল্ডার 'psplash' তৈরি করি এবং 'SPLASH_IMAGES'-এর ভেরিয়েবলগুলিকে ওভাররাইড করতে 'psplash_%.bbappend' ফাইলটি যোগ করি।

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

'bblayers.conf'-এ 'মেটা-ইন্টারেলেক্ট্রনিক্স' যোগ করার পর, আমরা Linux ডিস্ট্রোকে বিটবেক করি, এটিকে একটি SD কার্ডে ফ্ল্যাশ করি এবং এটি দিয়ে Raspberry Pi 4 বুট করি।

কিন্তু স্প্ল্যাশ স্ক্রিনের জন্য কোন কাস্টম ব্যাকগ্রাউন্ড ছবি ব্যবহার করা হয়নি - কেন?

এই আচরণের কারণ কী?

'ত্রুটি' অনুসন্ধান করার পরে, আমরা মেটা-স্তরগুলির অগ্রাধিকার ভেরিয়েবলটি দেখেছি। Linux ডিস্ট্রো বিটবেক করার সময় মেটা-লেয়ারটি কোন র‍্যাংকে ব্যবহার করা হয় তা নির্ধারণ করার জন্য অগ্রাধিকারের জন্য মেটা-লেয়ারগুলির একটি ভেরিয়েবল রয়েছে।

ভেরিয়েবলটি 'meta-interelectronix/conf/layer.conf' ফাইলে সেট করা আছে:

BBFILE_PRIORITY_meta-interelectronix = "6"

আমাদের ক্ষেত্রে, 'মেটা-ইন্টারেলেক্ট্রনিক্স'-এর অগ্রাধিকার '6' এ সেট করা হয়েছে এবং 'মেটা-রাস্পবেরিপি'-এর অগ্রাধিকার '9' এ সেট করা হয়েছে।

অগ্রাধিকার যত বেশি, তত পরে বিটবেকে প্রয়োগ করা bbappend ফাইলের ভেরিয়েবল প্রয়োগ করা হয়েছিল। 'মেটা-রাস্পবেরিপি'-তেও একটি 'psplash_%.bbappend' ফাইল, এই ফাইলের ভেরিয়েবল আমাদের 'মেটা-ইন্টারেলেক্ট্রনিক্স' লেয়ারে আবার ওভাররাইড করে, কিছুই পরিবর্তন হয় না।

দ্রষ্টব্য

আপনার কাস্টম মেটা-লেয়ারের অগ্রাধিকার একটি উচ্চ সংখ্যায় পরিবর্তন করুন, যেমন 50, আপনার পরিবর্তনগুলিকে পরবর্তীতে বিদেশী মেটা-লেয়ারগুলির সমস্ত ওভাররাইড হিসাবে প্রয়োগ করতে।

কীভাবে সহজে ভেরিয়েবলের র‍্যাঙ্কিং পাওয়া যায়?

সমস্ত মেটা-স্তরগুলির উপর একটি ভেরিয়েবলের র‌্যাঙ্কিং পেতে একটি সহজ কমান্ড রয়েছে:

bitbake-getvar -r recipe VARIABLE

আমাদের ক্ষেত্রে, কমান্ড ছিল:

bitbake-getvar -r psplash SPLASH_IMAGES

'মেটা-ইন্টারেলেক্ট্রনিক্স' স্তরের অগ্রাধিকার '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 লাইসেন্সের অধীনে লাইসেন্সকৃত।