BitBake - 什么定义了菜谱的任务顺序?

问题描述 投票:0回答:1

有没有办法列出使用 BitBake 构建配方时应执行的任务顺序?我知道我可以构建配方,然后检查

log.task_order
,但这不是我想要的 - 我想知道为给定配方定义的任务顺序在哪里,而不实际构建它。我也知道有
bitbake <recipe_name> -c listtasks
,但是据我所知,它列出了所有 可用 任务,无论它们是否在构建期间实际执行。

更新: 我感兴趣的配方是内核配方,这是完整干净构建后的

log.task_order
的样子:

do_fetch
do_unpack
do_prepare_recipe_sysroot
do_kernel_checkout
do_symlink_kernsrc
do_validate_branches
do_kernel_metadata
do_patch
do_kernel_version_sanity_check
do_populate_lic
do_kernel_configme
do_configure
do_kernel_configcheck
do_compile
do_shared_workdir
do_kernel_link_images
do_compile_kernelmodules
do_strip
do_sizecheck
do_install
do_populate_sysroot
do_package
do_packagedata
do_package_qa
do_package_write_ipk
do_bundle_initramfs
do_deploy

我希望这个序列是在菜谱元数据中的某个地方定义的,但我还没有找到它。

yocto bitbake recipe
1个回答
0
投票

查看任务顺序

bitbake -g -u taskexp YOUR_TARGET

它可以针对任何配方或目标运行,并将打开任务资源管理器。搜索左侧的

YOUR_TARGET
,查看将运行哪些任务(不要模糊搜索,必须逐字记录)。要探索屏幕右半部分显示的依赖关系,我建议从
do_build
任务开始。如果它看起来有点令人畏惧,因为所有任务都已列出,只需专注于您的目标任务,例如
glibc.do_...
就我而言。

bitbake 如何订购任务

bitbake 通过依赖关系来排序任务,例如

addtask do_a before do_b
。配方的“锚”任务是
do_build
,即每个任务都直接或间接与其链接。您看到的大多数任务(如
do_fetch
do_compile
等)都是默认任务。它们是在
poky/meta
目录中的某个位置预定义的,尤其是
poky/meta/classes
。如需概览,请在提到的目录之一中快速查看
grep -Iri addtask

任务的顺序是在 bitbake 解析配方时确定的。没有单个文件或配方具有它们的列表,因为在解析配方之前自然不知道顺序。 构建后读取

log.task_order
文件最接近简单列表,AFAIK。

Screenshot of bitbake taskexplorer

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.