新增软件包指导¶
配方(bb文件)是 Yocto 项目中的基本组件。Yocto 构建系统构建的每个软件组件都需要一个配方来定义组件;bbappend 文件是 bb 文件的补充,在最后解析。
新增软件包到镜像中需要软件包的源码和对应的 bb 文件。
主要过程¶
源码获取
源码通常在 src-openEuler 上获取,在 download_code.sh 脚本中增加下载相关代码的命令;如果 src-openEuler 上不存在对应源码,可以从官网获取后放在 SRC_DIR 目录(yocto-meta-openeuler同级目录)下。
例如,在 download_code.sh 脚本中增加下载 audit 源码:
...
download_code()
{
...
update_code_repo src-openeuler/audit ${SRC_BRANCH} //SRC_BRANCH为分支名
}
获取配方(bb文件)
先确认 yocto-poky 仓是否存在相应软件包的 bb 文件:
$ find yocto-poky -name <package>*.bb
如果没有找到则可以在 OpenEmbedded Layer 搜索,然后拷贝需要的文件(bb、补丁等)到 meta-openeuler 层。
适配配方
OPENEULER_REPO_NAME: src-openEuler存储仓名称;
PV: 版本;
SRC_URI: 源码来源;
SRC_URI[md5sum/sha256sum]: 源码校验码;
S: 源码解压后目录。
OPENEULER_REPO_NAME = "仓库具体命名"
PV = "版本号"
SRC_URI_remove = "原源码链接"
SRC_URI_prepend = "file://源码包 \
"
SRC_URI[sha256sum] = "校验码" //执行 sha256sum 源码包
S = "${WORKDIR}/${BP}" //BP变量表示软件名-版本号,如果不符合则需要修改
举例:查看 meta-openeuler/recipes-support/libjitterentropy/libjitterentropy_%.bbappend 的编写。
优先构建未支持的依赖包,从下往上依次适配;查看依赖方法:
bitbake <package> -g //此命令输出软件依赖到文件中
cat pn-buildlist
单包构建
$ bitbake <package>
加入镜像
单包构建完成后,将所需子包追加到包管理 bb 文件 RDEPNDNS 变量中(文件位于 meta-openeuler/recipes-core/packagegroups/packagegroup-xxx.bb)。例如:
RDEPENDS_${PN} += "audit"
构建镜像
openeuler-image-tiny 镜像中只包含了运行系统所需的最基本的包文件,构建所需时间较少;为了避免构建时间过长,推荐先将所需子包加入到 openeuler-image-tiny 镜像进行验证,验证通过后再加入到 openeuler-image 镜像中。
bitbake openeuler-image or openeuler-image-tiny
这时产生的镜像中已经包含了你所需的软件包。