你知道如何使用分布式bitbake编译构建一个oe项目吗? 我想到了distcc。
export PATH=~/distcc/bin:$PATH
make -jn CC=linux-gcc
make会从我指向distcc的路径调用linux-gcc
distcc会将任务安排到所有已知主机
-jn将创建make的n6个实例
它工作正常
但是现在我想用bitbake来使用distcc
我知道如何在bitbake中使用-jn
只需使用export PARALLEL_MAKE=-jn
但是如何使用bitbake导出PATH=~/distcc/bin:$PATH
distcc/bin
必须站在$PATH
前面
但bitbake会将$PATH_prepend
(放在org.openembedded.dev/conf/bitbake.conf中)放在$PATH
前面。
或者有人使用另一种工具来更好地使用bitbake进行分布式构建?
答案 0 :(得分: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.conf 或 local.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"
答案 1 :(得分:1)
使用并行性调用构建的稍微多一点BitBake-ish方法是编辑local.conf并取消注释BB_NUMBER_THREADS和PARALLEL_MAKE,并将它们的值设置为您拥有的核心数的两倍。现在,无论何时调用BitBake,它都将使用这些值。