yocto recipe : (4) recipe's task 撰寫
Recipe's Task
recipe 包含許多 tasks, 以下紀錄關於 recipe 的 task 撰寫
1. 列出 recipe 的 tasks
yijyun@wd-disk: build$ bitbake libunistring -c listtasks
2. function types of tasks
根據[1] 的 3.6.1 Promoting a Function to a Task. 能成為 task 的 function 只有兩種類型. 此外需要以 "do_" 為開頭
- shell function
- BitBake-style Python functions
do_shell_msg () {
bbwarn 'hello'
}
python do_py_msg () { import time bb.warn( "hello %s" % ( time.strftime('%Y%m%d', time.gmtime()))) }
3. 新增/刪除/插入 task
新增
以 addtask 加入 new task, 可以搭配 before 與 after 決定順序
# syntax addtask task [before task] [after task] # e.g. addtask do_msg before do_configure after do_fetch
插入
以現有 task function 名稱. 尾部使用 append or prepend 即可
do_msg_prepend () { bbwarn 'before' } do_msg_append () { bbwarn 'before' } do_msg () { bbwarn 'kkk' } addtask do_msg
刪除
deltask 特定 task 即可. 切記使用此方式會把此任務相依的 task 一併刪除. 如果要忽略某個 task, 請使用 do_task_name[noexec] = "1"
deltask do_configure
範例
使用 deltask do_configure 後, task 的執行順序
# error with deltask do_configure do_populate_lic (29798): log.do_populate_lic.29798 do_compile (29797): log.do_compile.29797 # normal do_prepare_recipe_sysroot (29992): log.do_prepare_recipe_sysroot.29992 do_populate_lic (29993): log.do_populate_lic.29993 do_configure (30004): log.do_configure.30004 do_compile (6522): log.do_compile.6522 do_install (26823): log.do_install.26823 ... do_package_write_rpm (27184): log.do_package_write_rpm.27184
4. Variable Flags
[1] 的 3.7. Variable Flags 章節. Variable Flags 可用於控制 task 的 functionality 與 dependencies
範例
列出一些 variable Flags
# disable a task do_msg[noexec] = "1" # lock files while executing do_rootfs[lockfiles] += "${WORKDIR}/ipk.lock" # empty folders before running do_unpack[cleandirs] += " ${S} ${STAGING_KERNEL_DIR} ${B}" # Controls inter-task dependencies do_rootfs[depends] += "mklibs-native:do_populate_sysroot"
留言
張貼留言