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"