2015-12-03 52 views
6


の私のファイルをインストールしていない私は、ターゲットのルートファイルシステム上の/ libに/ファームウェア/ディレクトリの中に私のファイル(VPUのファームウェアのバイナリ)の2をコピーするbitbakeレシピを作成しました。Bitbakeはrootfsのイメージ

私は多くのオプションを試していますので、レシピの中で何が不要であるか、そして何が必要なのかは分かりません。 私は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 \ 
" 

私が間違っている点を教えてください。

EDIT:
Andersが本当に助けて問題を解決しました。

「固定」レシピを誰かが参考にして投稿しています。

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}も必要ありません。これは、PNを空にするために使用されます。これは、他のパッケージを作成する場合にのみ便利です。あなたの場合は、PNでファ​​ームウェアファイルを作成します。そのため、ファイルをインストールできない場合は、パッケージをビルドするときにbitbakeエラーが発生することをお勧めします。

INSANE_SKIP_${PN} += "installed-vs-shipped"も必要ありません。 do_installにパッケージを入れていないファイルをインストールする場合にのみ必要です。通常はインストールしないでください。

do_install()は正常に動作します。でも、私はcpchmodの代わりにinstallを使うことをお勧めします。そうすれば、所有者とグループが正しいことが保証されます。 (これについてのチェックは、Jethroの新しいQAチェックとして追加されます)。

PACKAGES = "${PN}"は不要です。

${D}FILES_${PN}の定義から削除します。 FILESのパスはターゲット上のパスにする必要があります(つまり、D - ディレクトリは含まない)。

これはあなたを稼働させるはずです。

+0

bbappendでのみ使用されるFILESEXTRAPATHSは完全に真ではなく、ファイルを検索するためのパスを追加することができます。 bbファイルでも役に立ちます –

+0

もし使用できるのであれば確かにそれは本当に何か本当の利点ですか?ファイルを見つけるためにすでに3つのディレクトリがあります。その場合、さらに多くのディレクトリが必要でしょうか? – Anders

+0

私は既存のyoctoフレームワークで自分のプロジェクトのレイヤーを作っています。 キャッチフレーズは、私は私の "ソースコード"をソーシングしていません、我々は顧客にタールボールとして提供しています。 私はそのコードをマシン内のどこにでもローカルに保持するための柔軟性をユーザに与えたいと思っています。 ここで私の変更がどこに保存されているかを知るために、私はそれを使用しなければなりません。私に知らせるより良い方法があれば、私はそれを使用して幸せになります。 –

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にコピーされます。

関連する問題