bitbake配方 - 做一个简单的图像副本

Jam*_*nco 2 recipe bitbake yocto

我正在尝试编写一个配方,可以在构建整个映像时将两个文件(MyfileA,MyfileB)简单地复制到特定目录.这就是我的目录结构:

MyDir/MyRecipe.bb
MyDir/files/MyfileA
MyDir/files/MyfileB
Run Code Online (Sandbox Code Playgroud)

我想将这两个文件复制到家中的文件夹(最初不存在,因此应该创建目录)文件夹让我们称之为"Testfolder"这就是我的bitbake文件看起来像

DESCRIPTION = "Testing Bitbake file"
PR = "r0"

SRC_URI = "file://MyfileA \
           file://MyfileB "

do_install() {
        install -d  MyfileA ~/TestFolder/
}
Run Code Online (Sandbox Code Playgroud)

如果我在这里做错了,请告诉我?当我对此运行bitbake时,我得到以下内容

The BBPATH variable is not set and bitbake did not find a conf/bblayers.conf file in the expected location.
Maybe you accidentally invoked bitbake from the wrong directory?
DEBUG: Removed the following variables from the environment: LANG, LS_COLORS, LESSCLOSE, XDG_RUNTIME_DIR, SHLVL, SSH_TTY, OLDPWD, LESSOPEN, SSH_CLIENT, MAIL, SSH_CONNECTION, XDG_SESSION_ID, _, BUILDDIR
Run Code Online (Sandbox Code Playgroud)

在这方面的任何帮助将不胜感激.

Cha*_* C. 7

首先,要创建自己的元层,您应该yocto-layer create MyRecipe在Yocto环境中运行命令.这是为了确保您拥有元图层中的所有必要元素.确保将新的元层放入conf/bblayers.conf中

您可以在此处找到创建HelloWorld配方视频

其次,将文件从一个目录复制到另一个目录.

DESCRIPTION = "Testing Bitbake file"
SECTION = "TESTING"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"

SRC_URI = "file://MyfileA \
           file://MyfileB "

#specify where to get the files
S = "${WORKDIR}"

inherit allarch

#create the folder in target machine
#${D} is the directory of the target machine
#move the file from working directory to the target machine

do_install() {
        install -d ${D}/TestFolder 
        install -m ${WORKDIR}/MyfileA ${D}/TestFolder
}
Run Code Online (Sandbox Code Playgroud)

为了获得更多细节,这是我对文件在Yocto中如何移动的理解.

您有一个存储元数据的目录/sourced/meta-mylayer/recipes-myRecipe/.在该目录中,将有一个与配方同名的文件夹.IE myRecipe/ myRecipe_001.bb.

您将存储与myRecipe.bb(通常是补丁)相关的文件,myRecipe/以便SRC_URI进入该myRecipe/目录以获取文件.IE myFileA,myFileB

然后,指定S.这是构建目录中解压缩的配方源代码所在的位置.通过这个意思,myFileAmyFileBmyRecipe构建时移动/复制到那里.

通常,S等于${WORKDIR},这相当于${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}

实际目录取决于几个方面:

TMPDIR:顶级构建输出目录

MULTIMACH_TARGET_SYS:目标系统标识符

PN:食谱名称

EXTENDPE:纪元 - (如果没有指定PE,大多数食谱通常都是这种情况,那么EXTENDPE是空白的)

PV:食谱版本

PR:食谱修订版

在那之后,我们inherit allarch. 此类用于独立于体系结构的配方/数据文件(通常是脚本).

然后,我们要做的最后一件事是复制文件.

${D}是构建目录中由do_install任务安装组件的位置.此位置默认为${WORKDIR}/image

${WORKDIR}/image也可以描述为/目标系统中的目录.

转到${D}目录并创建文件夹调用TestFolder 然后,将myFileA复制${WORKDIR}${D}/TestFolder

PS请添加评论以修复.这里可能有错误的信息,因为我自己也学到了这一切.