2015-12-03 5 views
6


Ich habe ein Bitbake-Rezept erstellt, die 2 meiner Dateien (Firmware-Binärdateien für VPU) in/lib/Firmware/Verzeichnis auf Ziele root-Dateisystem kopieren würde.Bitbake nicht meine Datei in der rootfs Bild

Ich habe viele Optionen ausprobiert, daher bin ich mir jetzt nicht sicher, was in meinem Rezept unnötig/redundant ist und was benötigt wird. Ich denke, dass FILESEXTRAPATHS .., SRC_URI .. und do_install .. sollte genug sein, aber es funktioniert nicht mit nur es und auch nicht mit allen anderen Sachen.

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 \ 
" 

Können Sie mir bitte zeigen, was ich falsch mache?

EDIT:
Anders Antwort wirklich geholfen und das Problem gelöst.

Ich posten "feste" Rezept, falls jemand es hilfreich findet.

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 \ 
" 

Antwort

6

Entfernen Sie alle Leitungen, die nicht notwendig sind, nur um auf der sicheren Seite zu sein.

FILESEXTRAPATHS ist nicht erforderlich; Es wird nur verwendet, wenn Sie eine .bbappend Datei schreiben, um ein Rezept in einer anderen Ebene zu ändern.

ALLOW_EMPT_${PN} wird ebenfalls nicht benötigt. Es wird verwendet, um PN leer zu lassen, was nur nützlich ist, wenn Sie andere Pakete erstellen. In Ihrem Fall, Sie wollen die Firmware-Dateien in PN, so ist es besser, Bitbake Fehler beim Erstellen Ihres Pakets haben, wenn die Dateien nicht installiert werden können.

INSANE_SKIP_${PN} += "installed-vs-shipped" wird auch nicht benötigt. Es ist nur erforderlich, wenn Sie Dateien in Ihrem do_install installieren, dass Sie kein Paket einlegen. Normalerweise wird empfohlen, sie nicht zu installieren oder stattdessen zu löschen.

Ihr do_install() sollte gut funktionieren; obwohl ich würde empfehlen, install anstelle von cp und chmod zu verwenden. Auf diese Weise ist sichergestellt, dass der Eigentümer und die Gruppe korrekt sind. (Überprüfungen werden als neuer QA-Check in Jethro hinzugefügt).

PACKAGES = "${PN}" wird nicht benötigt.

Entfernen Sie ${D} von Ihnen FILES_${PN} Definition. Die Pfade in FILES sollten der Pfad auf dem Ziel sein (d. H. Das -Verzeichnis nicht enthalten).

Dies sollte Sie auf'n'running bekommen.

+0

FILESEXTRAPATHS, die nur in bbappend verwendet werden, ist nicht ganz richtig, es kann den Pfad hinzufügen, in dem man nach Dateien sucht. Es kann in bb-Dateien auch nützlich sein –

+0

Sicher, wenn könnte verwendet werden, aber gibt es wirklich irgendeinen wirklichen Nutzen davon? Es gibt bereits drei Verzeichnisse, in denen Dateien gefunden werden. In welchem ​​Fall würden Sie mehr benötigen? – Anders

+0

Ich habe eine Schicht für mein Projekt im bestehenden yocto-Framework erstellt. Der Haken ist, ich bin nicht offen Sourcing meine "Quellcode", wir bieten das als Tar Ball Kunden. Ich möchte dem Benutzer Flexibilität geben, um diesen Code lokal in der Maschine zu behalten. Jetzt um zu sehen, wo lokal meine Änderungen behalten werden, muss ich es verwenden. Wenn es einen besseren Weg gibt, lass es mich wissen, ich werde mich freuen, das zu benutzen. –

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} 
} 

Bitte nehmen ref Code oben zu probieren, und es funktioniert auf MTK Bord und alle Shell-Dateien werden in/usr/bin kopiert werden.