
क्या आप अपने कस्टम मेटा-लेयर में रेसिपी वेरिएबल का कोई ओवरराइड बनाते हैं और कुछ नहीं होता?
खुद पर संदेह न करें, बस इस्तेमाल किए गए मेटा-लेयर की प्राथमिकता पर नज़र डालें।
उदाहरण
हम 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' में 'meta-interelectronix' को जोड़ने के बाद, हम Linux डिस्ट्रो को बिटबेक करते हैं, उसे किसी 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 Interelectronix e.K.
प्रोजेक्ट का सोर्स-कोड GPL-3.0 लाइसेंस के तहत लाइसेंस पर दिया जाता है।