Распределенная компиляция с помощью bitbake
Есть ли у вас какие-либо идеи о том, как создать проект с распределенной компиляцией bitbake? Я думал о distcc.
export PATH=~/distcc/bin:$PATH
make -jn CC=linux-gcc
make вызовет linux-gcc с моего пути, который указывает на distcc.
distcc будет планировать задачи для всех известных хостов.
-jn создаст n6 экземпляров make.
Работает нормально.
Но теперь я хочу использовать distcc с bitbake.
Я знаю, как использовать -jn с bitbake.
Просто используйте export PARALLEL_MAKE=-jn
Но как использовать экспорт PATH=~/distcc/bin:$PATH
с битбейком.distcc/bin
ДОЛЖЕН стоять перед $PATH
,
Но битбэйк заменит $PATH_prepend
(помещается в org.openembedded.dev/conf/bitbake.conf) перед $PATH
,
Или кто-то получил другой инструмент для лучшего способа распределенного построения с помощью bitbake?
2 ответа
Попробуйте Icecream: 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"
Немного более сложный способ вызова сборок с параллелизмом для BitBake- это отредактировать local.conf и откомментировать BB_NUMBER_THREADS и PARALLEL_MAKE и установить их значения в два раза больше имеющихся у вас ядер. Теперь, когда вы вызываете BitBake, он будет использовать эти значения.