
আপনি কি কখনও আপনার কাস্টম মেটা-লেয়ারে রেসিপি ভেরিয়েবলের একটি ওভাররাইড তৈরি করেন এবং কিছুই ঘটে না?
নিজেকে সন্দেহ করবেন না এবং ব্যবহৃত মেটা-স্তরগুলির অগ্রাধিকার দেখুন।
উদাহরণ
আমরা 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 লাইসেন্সের অধীনে লাইসেন্সকৃত।