2015-12-03 7 views
6


मैंने एक बिटबेक रेसिपी बनाई है जो मेरी फाइलों में से 2 (वीपीयू के लिए फर्मवेयर बाइनरी) को/lib/firmware/निर्देशिका में रूट रूट सिस्टम सिस्टम पर कॉपी करेगी।बिटबैक रूटफाइल छवि में मेरी फ़ाइल इंस्टॉल नहीं कर रहा है

मैंने कई विकल्पों का प्रयास किया है, इसलिए अब मुझे यकीन नहीं है कि मेरी नुस्खा में अनावश्यक/अनावश्यक और क्या आवश्यक है। मुझे लगता है कि FILESEXTRAPATHS .., SRC_URI .. और do_install .. पर्याप्त होना चाहिए लेकिन यह केवल इसके साथ काम नहीं करता है और न ही अन्य सभी चीजों के साथ।

DESCRIPTION = "VPU libraries provided by fsl" 

LICENSE = "MIT" 
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690" 

PACKAGE_ARCH = "all" 
ALLOW_EMPTY_${PN} = "1" 

FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 
SRC_URI += " \ 
    file://vpu_fw_imx6d.bin \ 
    file://vpu_fw_imx6q.bin \ 
" 

INSANE_SKIP_${PN} += "installed-vs-shipped" 

do_install() { 
    install -d ${D}${base_libdir}/firmware/ 
    cp ${WORKDIR}/vpu_fw_imx6d.bin ${D}${base_libdir}/firmware/ 
    cp ${WORKDIR}/vpu_fw_imx6q.bin ${D}${base_libdir}/firmware/ 
    chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6d.bin 
    chmod 755 ${D}${base_libdir}/firmware/vpu_fw_imx6q.bin 
} 
PACKAGES = "${PN}" 
FILES_${PN} += " \ 
     ${D}${base_libdir}/firmware/vpu_fw_imx6d.bin \ 
     ${D}${base_libdir}/firmware/vpu_fw_imx6q.bin \ 
" 

क्या आप कृपया मुझे बता सकते हैं कि मैं क्या गलत करता हूं?

संपादित करें:
एंडर्स का जवाब वास्तव में इस मुद्दे को हल करने और हल करने में मदद करता है।

अगर कोई इसे उपयोगी पाता है तो मैं "निश्चित" नुस्खा पोस्ट कर रहा हूं।

DESCRIPTION = "VPU libraries provided by fsl" 

LICENSE = "MIT" 
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=4d92cd373abda3937c2bc47fbc49d690" 

PACKAGE_ARCH = "all" 

SRC_URI += " \ 
    file://vpu_fw_imx6d.bin \ 
    file://vpu_fw_imx6q.bin \ 
" 

do_install() { 
    install -d ${D}${base_libdir}/firmware/ 
    install -m 755 ${WORKDIR}/vpu_fw_imx6d.bin ${D}${base_libdir}/firmware/ 
    install -m 755 ${WORKDIR}/vpu_fw_imx6q.bin ${D}${base_libdir}/firmware/ 
} 

FILES_${PN} += " \ 
     ${base_libdir}/firmware/vpu_fw_imx6d.bin \ 
     ${base_libdir}/firmware/vpu_fw_imx6q.bin \ 
" 

उत्तर

6

आवश्यक सभी लाइनों को हटाएं, केवल सुरक्षित पक्ष पर रहने के लिए।

FILESEXTRAPATHS आवश्यक नहीं है; इसका उपयोग तब किया जाता है जब आप किसी अन्य परत में नुस्खा को संशोधित करने के लिए .bbappend फ़ाइल लिख रहे हैं।

ALLOW_EMPT_${PN} की भी आवश्यकता नहीं है। इसका उपयोग पीएन को खाली होने की अनुमति देने के लिए किया जाता है, जो केवल तभी उपयोगी होता है जब आप अन्य पैकेज बना रहे हों। आपके मामले में, आप पीएन में फर्मवेयर फाइलों को wnat, इस प्रकार फ़ाइलों को स्थापित नहीं किया जा सकता है, तो अपने पैकेज का निर्माण करते समय बिटबैक त्रुटि बाहर होना बेहतर है।

INSANE_SKIP_${PN} += "installed-vs-shipped" भी आवश्यक नहीं है। यह केवल तभी जरूरी है जब आप अपने do_install में फ़ाइलों को इंस्टॉल करते हैं जिन्हें आप पैकेज में नहीं डाल रहे हैं। आम तौर पर, आपको सलाह दी जाती है कि वे इंस्टॉल न करें या इसके बजाय फाइलों को हटा दें।

आपका do_install() ठीक काम करना चाहिए; हालांकि मैं cp और chmod के बजाय install का उपयोग करने की अनुशंसा करता हूं। इस तरह आप यह भी सुनिश्चित कर रहे हैं कि मालिक और समूह सही होंगे। (इसके लिए चेक जेथ्रो में एक नई क्यूए चेक के रूप में जोड़े गए हैं)।

PACKAGES = "${PN}" की आवश्यकता नहीं है।

परिभाषा से ${D} हटाएं। FILES में पथ लक्ष्य पर पथ होना चाहिए (यानी D-निर्देशिका सहित)।

यह आपको अपनाना चाहिए।

+0

केवल बीबीएपेंड में उपयोग किए जाने वाले FILESEXTRAPATHS पूरी तरह से सच नहीं है, यह पथ जोड़ सकता है जहां एक फ़ाइल फ़ाइलों को खोजने के लिए। यह बीबी फाइलों में भी उपयोगी हो सकता है –

+0

निश्चित रूप से इस्तेमाल किया जा सकता है, लेकिन क्या वास्तव में इसका कोई वास्तविक लाभ है? पहले से ही तीन निर्देशिकाएं हैं जिनका उपयोग फ़ाइलों को खोजने के लिए किया जाता है, इस मामले में आपको और अधिक आवश्यकता होगी? – Anders

+0

मैंने अपने प्रोजेक्ट के लिए मौजूदा योक्टो फ्रेमवर्क में एक परत बनाई है। पकड़ है, मैं अपना "स्रोत कोड" सोर्सिंग नहीं खोल रहा हूं, हम इसे ग्राहकों को टैर बॉल के रूप में प्रदान कर रहे हैं। मैं उस कोड को स्थानीय रूप से मशीन में कहीं भी रखने के लिए उपयोगकर्ता को लचीलापन देना चाहता हूं। अब यह बताने के लिए कि स्थानीय रूप से मेरे परिवर्तन कहां रखा जाता है, मुझे इसका उपयोग करना होगा। यदि कोई बेहतर तरीका है तो कृपया मुझे बताएं, मुझे इसका उपयोग करने में खुशी होगी। –

0
inherit externalsrc package 

DESCRIPTION = "telephony demo" 
LICENSE = "MediaTekProprietary" 
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff" 
DEPENDS = "platform-libs audio-mixer-ctrl libvendorril libpal gstreamer1.0 glib-2.0 dtmf libapn" 
inherit workonsrc 
WORKONSRC = "${TOPDIR}/../meta/meta-mediatek-ivt/recipes-telephony/telephony/files" 

SCRIPT_CC_API = "scripts/CC_API" 
SCRIPT_DATA_API = "scripts/Data_API" 
SCRIPT_ECALL_API = "scripts/ECALL_API" 
SCRIPT_NETWORK_API = "scripts/Network_API" 
SCRIPT_SIM_API = "scripts/SIM_API" 
SCRIPT_SM_API = "scripts/SM_API" 
SCRIPT_SMS_API = "scripts/SMS_API" 
SCRIPT_SS_API = "scripts/SS_API" 
SCRIPT_STK_API = "scripts/STK_API" 

do_compile() { 
    if test "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" || test "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4"; then 
     oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -mhard-float" 
    else 
     oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}" 
    fi 
} 

do_install() { 
    install -d ${D}${bindir}/ 
    install -m 0755 ${S}/telephony ${D}${bindir}/ 

    install -d ${D}${bindir}/${SCRIPT_CC_API} 
    install -m 0755 ${S}/${SCRIPT_CC_API}/* ${D}${bindir}/${SCRIPT_CC_API} 

    install -d ${D}${bindir}/${SCRIPT_DATA_API} 
    install -m 0755 ${S}/${SCRIPT_DATA_API}/* ${D}${bindir}/${SCRIPT_DATA_API} 

    install -d ${D}${bindir}/${SCRIPT_ECALL_API} 
    install -m 0755 ${S}/${SCRIPT_ECALL_API}/* ${D}${bindir}/${SCRIPT_ECALL_API} 

    install -d ${D}${bindir}/${SCRIPT_NETWORK_API} 
    install -m 0755 ${S}/${SCRIPT_NETWORK_API}/* ${D}${bindir}/${SCRIPT_NETWORK_API} 

    install -d ${D}${bindir}/${SCRIPT_SIM_API} 
    install -m 0755 ${S}/${SCRIPT_SIM_API}/* ${D}${bindir}/${SCRIPT_SIM_API} 

    install -d ${D}${bindir}/${SCRIPT_SM_API} 
    install -m 0755 ${S}/${SCRIPT_SM_API}/* ${D}${bindir}/${SCRIPT_SM_API} 

    install -d ${D}${bindir}/${SCRIPT_SMS_API} 
    install -m 0755 ${S}/${SCRIPT_SMS_API}/* ${D}${bindir}/${SCRIPT_SMS_API} 

    install -d ${D}${bindir}/${SCRIPT_SS_API} 
    install -m 0755 ${S}/${SCRIPT_SS_API}/* ${D}${bindir}/${SCRIPT_SS_API} 

    install -d ${D}${bindir}/${SCRIPT_STK_API} 
    install -m 0755 ${S}/${SCRIPT_STK_API}/* ${D}${bindir}/${SCRIPT_STK_API} 
} 

कृपया उपरोक्त कोड नमूने के लिए रेफरी लेते हैं, और MTK बोर्ड पर काम करता है और सभी खोल फ़ाइलें/usr/bin में कॉपी किया जायेगा।

संबंधित मुद्दे