yocto 手册
关键词: yocto bitbak
了解bitbake语法,大概了解即可,等需要的时候回来查。
主要内容:
- bitbake语法
- bitbake函数
文档参考:
- 官方手册:https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-metadata.html
bitbake语法
参考:https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-metadata.html
基本语法
运算符
- = 赋值
- ?= 设置默认值 如果变量具有值,则可以保留该值,无则赋值
- ??= 弱默认值 任何" =“或”?=“分配都将覆盖用” ?? ="设置的值
- += =+ 这些运算符在当前值和前置或附加值之间插入一个空格
- .= =. 附加或添加值不插入空格
- _append 前追加
- _prepend后追加 在可变扩展时间应用的,而不是立即应用的
- _remove 移除 在可变扩展时间应用的,而不是立即应用的
- unset 完全删除变量或变量标志
- export 将变量导出到环境
内联Python变量扩展
DATE = "${@time.strftime('%Y%m%d',time.gmtime())}"
#DATE变量设置为当前日期。
#此功能最常见的用途可能是从BitBake的内部数据字典中提取变量的值d。
#以下各行分别选择软件包名称及其版本号的值:
PN = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
PV = "${@bb.parse.BBHandler.vars_from_file(d.getVar('FILE', False),d)[1] or '1.0'}"
向环境导出变量
export ENV_VARIABLE
ENV_VARIABLE = "value from the environment"
export ENV_VARIABLE = "variable-value"
#通常导出到环境中的变量是CC和 CFLAGS,许多构建系统都会使用和。
bb文件引入和继承
BitBake允许通过包含文件(.inc)和类文件(.bbclass)共享元数据。
例如,假设您具有一项通用功能,例如要在多个配方之间共享的任务定义。在这种情况下,创建.bbclass包含通用功能的文件,
然后inherit 在配方中使用指令继承类将是共享任务的通用方法。
主要包括 include, inherit, INHERIT, and require BitBake
- inherit 编写配方或类文件时,可以使用inherit
指令继承类(.bbclass)的功能,覆盖配方中继承类的任何值和函数。 - include
解析您指定的任何文件,并将该文件插入该位置,路径是相对路径,找不到文件时,include指令不会产生错误。 - require
解析您指定的任何文件,并将该文件插入该位置,找不到文件时,require指令会产生错误。 - INHERIT 创建配置文件(.conf)时,可以使用 INHERIT配置指令来继承类。
依赖关系
- 构建依赖项
- DEPENDS变量来管理构建时间依赖性
[deptask]任务的varflag表示其中列出的每个项目的任务DEPENDS必须先完成,然后才能执行该任务。 - do_configure[deptask] = “do_populate_sysroot”
do_populate_sysroot每个项目的任务DEPENDS必须先完成,然后do_configure才能执行。
- 运行时依赖
- PACKAGES,RDEPENDS和RRECOMMENDS 变量来管理运行时依赖项。
- PACKAGES变量列出了运行时软件包。每个这些软件包可以拥有RDEPENDS和RRECOMMENDS运行时依赖。在
[rdeptask]对任务标志用于表示,能够执行任务前,必须完成每个项目的运行时依赖的任务。
- 递归依赖性
- recrdeptask标志来管理递归任务依赖性。
- 任务间依赖性
- depends标志来管理任务间依赖性
bitbake函数
函数
BitBake支持以下类型的函数
- Shell函数:用Shell脚本编写并直接作为函数和/或任务执行的函数。也可以由其他Shell函数调用它们。
- BitBake样式的Python函数:用Python编写的函数,并由BitBake或其他Python函数执行
bb.build.exec_func()。 - Python函数:用Python编写并由Python执行的函数。
- 匿名Python函数:在解析过程中自动执行的Python函数。
BitBake支持Shell和Python函数
- d.getVar(“X”, expand) 返回变量" X"的值。使用" expand =
True"扩展值。如果变量" X"不存在,则返回" None"。 - d.setVar(“X”, “value”) 将变量" X"设置为"值"
- d.appendVar(“X”, “value”) 在变量" X"的末尾添加"值"。就像变量"
X"不存在一样。d.setVar(“X”, “value”) - d.prepend