有没有办法列出使用 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
我希望这个序列是在菜谱元数据中的某个地方定义的,但我还没有找到它。
bitbake -g -u taskexp YOUR_TARGET
它可以针对任何配方或目标运行,并将打开任务资源管理器。搜索左侧的
YOUR_TARGET
,查看将运行哪些任务(不要模糊搜索,必须逐字记录)。要探索屏幕右半部分显示的依赖关系,我建议从 do_build
任务开始。如果它看起来有点令人畏惧,因为所有任务都已列出,只需专注于您的目标任务,例如glibc.do_...
就我而言。
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。