एम्बेडेड सॉफ्टवेयर - योक्टो व्यंजनों निर्भरता एक कंप्यूटर का स्क्रीनशॉट

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' में '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 लाइसेंस के तहत लाइसेंस पर दिया जाता है।