8.7.5. recipet语法
详细语法规范可参考 https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-metadata.html
变量赋值和操作
变量赋值允许将值分配给变量,赋值可以是静态文件,也可以包括其他变量的内容,除了赋值之外还支持追加和前置操作
S = "${WORKDIR}/postfix-${PV}"
CFLAGS += "-DNO_ASM"
SRC_URI:append = " file://fixup.patch"
函数
函数提供了一些要执行的操作,通常使用函数来覆盖任务h函数的默认实现或补充默认函数
do_install () {
autotools_do_install
install -d ${D}${base_bindir}
mv ${D}${bindir}/sed ${D}${base_bindir}/sed
rmdir ${D}${bindir}/
}
关键字
bitbake recipet仅使用几个关键字,可以使用关键字包含常用函数(inherit),从其他文件(include和require)加载recipet,并将变量导出到环境(export)
export POSTCONF = "${STAGING_BINDIR}/postconf"
inherit autoconf
require otherfile.inc
注释
任何以(#)开头的行都被视为注释行
# This is a comment
行继续()
使用反斜杠()字符将语句拆分为多行, 斜杠后面不能有任何字符
使用变量
SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/zlib-${PV}.tar.gz"
引用赋值
VAR1 = "${OTHERVAR}"
VAR2 = "The version is ${PV}"
条件赋值(?=)
条件赋值用于为变量赋值,但仅限于当前变量未赋值时。
VAR1 ?= "new value" #VAR1当前为空,则设置"new value"
**附加(+=)**
SRC_URI += "file://fix-makefile.patch"
前置(=+)
这种操作符号可将值前置到现有变量
append(:append)
使用append运算符将值附加到现有变量,添加到开头
SRC_URI:append = " file://fix-makefile.patch"
SRC_URI:append:sh4 = " file://fix-makefile.patch"
prepending(:prepend)
使用append运算符将值附加到现有变量,添加到末尾
使用python进行复杂操作
SRC_URI = "ftp://ftp.info-zip.org/pub/infozip/src/zip${@d.getVar('PV',1).replace('.', '')}.tgz"