30 在构建期间高效获取源文件
OpenEmbedded 构建系统处理由 SRC_URI 变量指定位置的源文件。使用 BitBake 构建时,定位和下载全部源码占据了相当一部分工作。对于镜像而言, 下载各软件包的全部源码可能耗时很长。
本节介绍如何利用镜像源加快源文件获取,以及如何预先获取文件,从而更高效地 利用资源和时间。
30 设置有效的镜像源
Yocto Project 构建中的相当一部分工作只是下载源码。你可能使用过其他构建 系统,已经积累了大量源码归档包;也可能有权读取他人保存这些文件的目录。 这时,可在配置文件中添加语句,让构建过程先检查本地目录中的归档包,再访问 互联网,从而节省时间。
以下是在 configuration file 中进行配置的一种高效方式:
SOURCE_MIRROR_URL ?= "file:///home/you/your-download-dir/"
INHERIT += "own-mirrors"
BB_GENERATE_MIRROR_TARBALLS = "1"
# BB_NO_NETWORK = "1"
上例中的 BB_GENERATE_MIRROR_TARBALLS 变量使 OpenEmbedded 构建系统 为 Git 仓库生成归档包,并将其保存在 DL_DIR 目录。出于性能考虑, 构建系统默认不会生成和保存这些归档包。
也可以使用 PREMIRRORS 变量。示例见 Yocto Project 参考手册中该变量的 词汇表条目。
30 仅获取源文件而不执行构建
为连续进行多次构建做准备的另一种方法,是预先获取所有源文件而不真正开始 构建。这样可以先解决下载问题,并最终将所有源文件收集到下载目录 build/downloads/ 中,该目录的位置由 DL_DIR 指定。
使用以下形式的 BitBake 命令获取所有必要源码,但不启动构建:
$ bitbake target --runall=fetch
这种 BitBake 命令形式可以确保获得该目标的全部源码,之后即使断开互联网 连接,也可以离线构建。