6任务
目录
6.1.24 do_prepare_recipe_sysroot
6.4.1 do_compile_kernelmodules
任务是 BitBake 的执行单元。配方(.bb
文件)使用任务来完成配置、编译和打包软件。本章提供了 OpenEmbedded 构建系统中定义的任务的参考。
6.1正常配方构建任务
以下部分描述了与构建配方相关的正常任务。有关任务和依赖项的更多信息,请参阅BitBake 用户手册中的“任务”和“依赖项”部分。
6.1.1 do_build
所有配方的默认任务。此任务取决于构建配方所需的所有其他正常任务。
6.1.2 do_compile
编译源代码。此任务在当前工作目录设置为${
B 的情况下运行}
。
此任务的默认行为是运行oe_runmake
如果一个makefile(函数Makefile
,makefile
或GNUmakefile
)中找到。如果未找到此类文件,则该do_compile
任务不执行任何操作。
6.1.3 do_compile_ptest_base
编译包含在正在构建的软件中的运行时测试套件。
6.1.4 do_configure
通过启用和禁用正在构建的软件的任何构建时间和配置选项来配置源。该任务在当前工作目录设置为${
B 的情况下运行}
。
此任务的默认行为是执行,如果一个makefile( ,,或)被发现, CLEANBROKEN未设置为“1”。如果未找到此类文件或CLEANBROKEN变量设置为“1”,则 任务不执行任何操作。oe_runmake clean
Makefile
makefile
GNUmakefile
do_configure
6.1.5 do_configure_ptest_base
配置正在构建的软件中包含的运行时测试套件。
6.1.6 do_deploy
写入要部署到${
DEPLOY_DIR_IMAGE 的输出文件 }
。该任务在当前工作目录设置为 ${
B 的情况下运行}
。
实现此任务的配方应继承 deploy类并将输出写入${
DEPLOYDIR}
,不要与${DEPLOY_DIR}
. 的deploy
类设置 do_deploy
为可以通过使用sstate加速共享状态(sstate)任务。sstate 机制负责将输出从 复制${DEPLOYDIR}
到${DEPLOY_DIR_IMAGE}
。
注意
不要将输出直接写入${DEPLOY_DIR_IMAGE}
,因为这会导致 sstate 机制发生故障。
该do_deploy
任务默认不添加为任务,因此需要手动添加。如果您希望任务在do_compile之后运行,您可以通过执行以下操作来添加它:
addtask deploy after do_compile
do_deploy
在其他任务之后添加的工作方式相同。
注意
您不需要添加到命令中(尽管它是无害的),因为该类包含以下内容:before do_build
addtask
base
do_build[recrdeptask] += "do_deploy"
有关更多信息,请参阅BitBake 用户手册中的“依赖关系”部分。
如果do_deploy
任务重新执行,任何先前的输出都会被删除(即“清理”)。
6.1.8 do_image
开始图像生成过程。该do_image
任务在 OpenEmbedded 构建系统运行do_rootfs任务之后运行, 在此期间确定要安装到映像中的包并创建根文件系统,并完成后处理。
所述do_image
任务执行预处理通过在图像上 IMAGE_PREPROCESS_COMMAND并动态生成支持do_image_*
根据需要的任务。
有关图像创建的更多信息,请参阅Yocto 项目概述和概念手册中的“图像生成”部分。
6.1.9 do_image_complete
完成图像生成过程。该do_image_complete
任务在 OpenEmbedded 构建系统运行do_image任务之后运行, 在此期间进行图像预处理并通过动态生成的do_image_*
任务构建图像。
该do_image_complete
任务通过IMAGE_POSTPROCESS_COMMAND对图像执行后处理 。
有关图像创建的更多信息,请参阅Yocto 项目概述和概念手册中的“图像生成”部分。
6.1.10 do_install
将要打包的文件复制到保存区 ${
D 中}
。此任务在当前工作目录设置为${
B 的情况下运行}
,这是编译目录。的do_install
任务,以及其他任务直接或间接地依赖于安装文件(例如 do_package,do_package_write_*
和 do_rootfs)下运行 fakeroot的。
注意
安装文件时,请注意不要将已安装文件的所有者和组 ID 设置为意外值。某些复制文件的方法,特别是在使用递归cp
命令时,可以保留原始文件的 UID 和/或 GID,这通常不是您想要的。在host-user-contaminated
对文件的QA检查检查,可能有错误的所有权。