bitbake 食谱 - 做图像的简单副本
bitbake recipe - doing a simple copy of the image
我正在尝试编写一个方法,在构建整体图像时将两个文件(MyfileA、MyfileB)简单地复制到特定目录。这是我的目录结构:
MyDir/MyRecipe.bb
MyDir/files/MyfileA
MyDir/files/MyfileB
我想将这两个文件复制到主目录中的一个文件夹(该文件夹最初不存在,因此应创建目录)假设该文件夹名为 "Testfolder"
这是我的 bitbake 文件的样子
DESCRIPTION = "Testing Bitbake file"
PR = "r0"
SRC_URI = "file://MyfileA \
file://MyfileB "
do_install() {
install -d MyfileA ~/TestFolder/
}
如果我在这里做错了什么,请告诉我?
当我 运行 对此进行 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
如能提供这方面的帮助,我们将不胜感激。
首先,要创建您自己的元层,您应该在 Yocto 环境中 运行 命令 yocto-layer create MyRecipe
。这是为了确保您在元层中拥有所有必要的元素。确保将新的元层放入 conf/bblayers.conf
可以找到创建 HelloWorld 食谱视频here
其次,将文件从一个目录复制到另一个目录。
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
}
为了获得更多细节,这是我对文件如何在 Yocto 中移动的理解。
您在 /sourced/meta-mylayer/recipes-myRecipe/
中有一个存储元数据的目录。在该目录中,将有一个与食谱同名的文件夹。 IE。 myRecipe/
myRecipe_001.bb
.
您可以将与 myRecipe.bb
相关的文件(通常是补丁)存储在 myRecipe/
中,以便 SRC_URI
进入 myRecipe/
目录以抓取文件。 IE。 myFileA
、myFileB
然后,您指定S
。这是解压缩的配方源代码所在的生成目录中的位置。也就是说,myFileA
和 myFileB
在 myRecipe
构建时是 moved/copied。
通常,S
等于${WORKDIR}
,这个相当于${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
The actual directory depends on several things:
TMPDIR: The top-level build output directory
MULTIMACH_TARGET_SYS: The target system identifier
PN: The recipe name
EXTENDPE: The epoch - (if PE is not specified, which is usually the case for most recipes, then EXTENDPE is blank)
PV: The recipe version
PR: The recipe revision
之后,我们inherit allarch
。 This class is used for architecture independent recipes/data files (usually scripts).
然后,我们要做的最后一件事就是复制文件。
${D}
是构建目录中由 do_install 任务安装组件的位置。此位置默认为 ${WORKDIR}/image
${WORKDIR}/image
也可以描述为目标系统中的/
目录。
转到 ${D}
目录并创建文件夹调用 TestFolder
然后,将 myFileA 从 ${WORKDIR}
复制到 ${D}/TestFolder
P.S。请添加评论以修复。这里可能有错误的信息,因为这些都是我自己学的。
我正在尝试编写一个方法,在构建整体图像时将两个文件(MyfileA、MyfileB)简单地复制到特定目录。这是我的目录结构:
MyDir/MyRecipe.bb
MyDir/files/MyfileA
MyDir/files/MyfileB
我想将这两个文件复制到主目录中的一个文件夹(该文件夹最初不存在,因此应创建目录)假设该文件夹名为 "Testfolder" 这是我的 bitbake 文件的样子
DESCRIPTION = "Testing Bitbake file"
PR = "r0"
SRC_URI = "file://MyfileA \
file://MyfileB "
do_install() {
install -d MyfileA ~/TestFolder/
}
如果我在这里做错了什么,请告诉我? 当我 运行 对此进行 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
如能提供这方面的帮助,我们将不胜感激。
首先,要创建您自己的元层,您应该在 Yocto 环境中 运行 命令 yocto-layer create MyRecipe
。这是为了确保您在元层中拥有所有必要的元素。确保将新的元层放入 conf/bblayers.conf
可以找到创建 HelloWorld 食谱视频here
其次,将文件从一个目录复制到另一个目录。
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
}
为了获得更多细节,这是我对文件如何在 Yocto 中移动的理解。
您在 /sourced/meta-mylayer/recipes-myRecipe/
中有一个存储元数据的目录。在该目录中,将有一个与食谱同名的文件夹。 IE。 myRecipe/
myRecipe_001.bb
.
您可以将与 myRecipe.bb
相关的文件(通常是补丁)存储在 myRecipe/
中,以便 SRC_URI
进入 myRecipe/
目录以抓取文件。 IE。 myFileA
、myFileB
然后,您指定S
。这是解压缩的配方源代码所在的生成目录中的位置。也就是说,myFileA
和 myFileB
在 myRecipe
构建时是 moved/copied。
通常,S
等于${WORKDIR}
,这个相当于${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
The actual directory depends on several things:
TMPDIR: The top-level build output directory
MULTIMACH_TARGET_SYS: The target system identifier
PN: The recipe name
EXTENDPE: The epoch - (if PE is not specified, which is usually the case for most recipes, then EXTENDPE is blank)
PV: The recipe version
PR: The recipe revision
之后,我们inherit allarch
。 This class is used for architecture independent recipes/data files (usually scripts).
然后,我们要做的最后一件事就是复制文件。
${D}
是构建目录中由 do_install 任务安装组件的位置。此位置默认为 ${WORKDIR}/image
${WORKDIR}/image
也可以描述为目标系统中的/
目录。
转到 ${D}
目录并创建文件夹调用 TestFolder
然后,将 myFileA 从 ${WORKDIR}
复制到 ${D}/TestFolder
P.S。请添加评论以修复。这里可能有错误的信息,因为这些都是我自己学的。