让我解释一下如何向 OpenEmbedded 构建过程添加自定义配置。
首先,这是运行时完成的过程:
source poky/oe-init-build-env
oe-init-build-env
脚本初始化OEROOT
变量以指向脚本本身的位置。
该oe-init-build-env
脚本获取另一个文件$OEROOT/scripts/oe-buildenv-internal
,该文件将:
- 检查是否
OEROOT
设置
- 设置
BUILDDIR
为您的自定义构建目录名称$1
,或者build
如果您不提供一个
- 设置
BBPATH
到poky/bitbake
文件夹
- 添加
$BBPATH/bin
和OEROOT/scripts
到PATH
(这将启用bitbake
和bitbake-layers
...之类的命令)
- 导出
BUILDDIR
并PATH
到下一个文件
- 该
oe-init-build-env
脚本继续运行最终的构建脚本:
TEMPLATECONF="$TEMPLATECONF" $OEROOT/scripts/oe-setup-builddir
- 该
oe-setup-builddir
脚本将:
- 检查是否
BUILDDIR
设置
- 在下面创建
conf
目录$BUILDDIR
- 获取一个模板文件,该文件将检查是否
TEMPLATECONF
设置了变量:
. $OEROOT/.templateconf
该文件包含:
# Template settings
TEMPLATECONF=${TEMPLATECONF:-meta-poky/conf}
这意味着如果TEMPLATECONF
未设置变量,请将其设置为meta-poky/conf
,这就是默认值local.conf
和bblayers.conf
的来源。
- 复制
$TEMPLATECONF
到$BUILDDIR/conf/templateconf.cfg
- 设置一些指向自定义
local.conf
和的变量bblayers.conf
:
OECORELAYERCONF="$TEMPLATECONF/bblayers.conf.sample"
OECORELOCALCONF="$TEMPLATECONF/local.conf.sample"
OECORENOTESCONF="$TEMPLATECONF/conf-notes.txt"
在oe-setup-builddir
有一条评论说TEMPLATECONF
可以指向一个目录:
#
# $TEMPLATECONF can point to a directory for the template local.conf & bblayers.conf
#
- 复制
local.conf.sample
并bblayers.conf.sample
从TEMPLATECONF
目录到BUIDDIR/conf
:
cp -f $OECORELOCALCONF "$BUILDDIR/conf/local.conf"
sed -e "s|##OEROOT##|$OEROOT|g" \
-e "s|##COREBASE##|$OEROOT|g" \
$OECORELAYERCONF > "$BUILDDIR/conf/bblayers.conf"
最后它会打印出里面OECORENOTESCONF
指向的内容TEMPLATECONF/conf-notes.txt
:
[ ! -r "$OECORENOTESCONF" ] || cat $OECORENOTESCONF
默认情况下位于meta-poky/conf/conf-notes.txt
:
### Shell environment set up for builds. ###
You can now run 'bitbake <target>'
Common targets are:
core-image-minimal
core-image-sato
meta-toolchain
meta-ide-support
You can also run generated qemu images with a command like 'runqemu qemux86'
Other commonly useful commands are:
- 'devtool' and 'recipetool' handle common recipe tasks
- 'bitbake-layers' handles common layer tasks
- 'oe-pkgdata-util' handles common target package tasks
因此,现在,在了解所有这些之后,您可以执行以下操作:
- 为您的项目创建一个自定义模板目录,其中包含:
- local.conf.sample
- bblayers.conf.sample
- conf-notes.txt
不要忘记将路径设置为poky
in bblayers.conf
to ##OEROOT##
,因为它将由构建脚本自动设置。
设置您的自定义消息conf-notes.txt
在任何新构建之前,只需设置TEMPLATECONF
:
TEMPLATECONF="<path/to/template-directory>" source poky/oe-init-build-env <build_name>
然后,您将找到一个包含您的自定义local.conf
和包含路径的bblayers.conf
附加文件的构建conf/templateconf.cfg
TEMPLATECONF