使用bitbake进行分布式编译

but*_*ter 6 distributed build distcc bitbake

你知道如何使用分布式bitbake编译构建一个oe项目吗?我想到了distcc.

export PATH=~/distcc/bin:$PATH
make -jn CC=linux-gcc
Run Code Online (Sandbox Code Playgroud)

make会从我指向distcc的路径调用linux-gcc.
distcc会将任务安排到所有已知主机.
-jn将创建make的n6个实例.
它工作正常.
但是现在我想用bitbake来使用distcc.
我知道如何在bitbake中使用-jn.
只是用export PARALLEL_MAKE=-jn

但是如何使用PATH=~/distcc/bin:$PATHbitbake 导出.
distcc/bin必须站在前面$PATH.
但bitbake会将$PATH_prepend(置于org.openembedded.dev/conf/bitbake.conf中)置于前面$PATH.

或者有人用另一种工具来更好地使用bitbake进行分布式构建?

小智 15

尝试冰淇淋:https://github.com/icecc/icecream/blob/master/README.md

与distcc一样,Icecream从构建中获取编译作业,并将其分发到允许并行构建的远程机器中.但与distcc不同,Icecream使用一个中央服务器,可以将编译作业动态调度到最快的免费服务器.

OpenEmbedded和Yocto Project都支持Icecream.请参阅https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/classes/icecc.bbclass

安装Icecream,然后将以下内容添加到site.conflocal.conf中

INHERIT += "icecc"

# This value overrides PARALLEL_MAKE when ICECC is enabled
# This would enable icecc for local and cross
ICECC_PARALLEL_MAKE = "-j 24"
Run Code Online (Sandbox Code Playgroud)


小智 0

调用并行构建的稍微有点像 BitBake 的方法是编辑 local.conf 并取消注释 BB_NUMBER_THREADS 和 PARALLEL_MAKE 并将它们的值设置为您拥有的核心数量的两倍。现在,每当您调用 BitBake 时,它​​都会使用这些值。