Страница 1 из 1
паралельная сборка портов (MAKE_JOBS_SAFE)
Добавлено: 2009-03-26 9:34:14
hizel
Последнее время наблюдаю много коммитов с маркированием портов MAKE_JOBS_SAFE for SMP compilation
интересно а как эту фкусность использовать
Re: паралельная сборка портов (MAKE_JOBS_SAFE)
Добавлено: 2009-03-26 9:41:22
zingel
Код: Выделить всё
echo "MAKE_JOBS_SAFE=yes" >> /etc/make.conf
Re: паралельная сборка портов (MAKE_JOBS_SAFE)
Добавлено: 2009-03-26 9:44:07
hizel
нэээ
bsd.port.mk
Код: Выделить всё
.if defined(DISABLE_MAKE_JOBS) || defined(MAKE_JOBS_UNSAFE)
_MAKE_JOBS= #
.else
.if defined(MAKE_JOBS_SAFE) || defined(FORCE_MAKE_JOBS)
.if defined(MAKE_JOBS_NUMBER)
_MAKE_JOBS= -j${MAKE_JOBS_NUMBER}
.else
_MAKE_JOBS= -j`${SYSCTL} -n kern.smp.cpus`
.endif
.if defined(FORCE_MAKE_JOBS)
BUILD_FAIL_MESSAGE+= "You have chosen to use multiple make jobs (parallelization) for all ports. This port was not tested for this setting. Please remove FORCE_MAKE_JOBS and retry the build before reporting the failure to the maintainer."
.endif
.endif
.endif
net-p2p/edonkey-tool-hash/Makefile
Re: паралельная сборка портов (MAKE_JOBS_SAFE)
Добавлено: 2009-03-26 10:50:26
Гость
читай рассылку freebsd-ports@ и/или комментарии в Mk/bsd.port.mk. Ничего особенного в этом нет, просто дочерний make или gmake теперь в зависимости от флага в порте MAKE_JOBS_SAFE будет запускаться с опцией -jX, коя контроллирует кол-во одновременно выполняемых целей, например несколько инстанций gcc. Но это касается не только портов, кои компилятся с помощью make/gmake. pav@ одобрил использование _MAKE_JOBS и в других системах сборки (напр, bjam в devel/boost).
глянь на примере emulators/qemu или emulators/sdlmame, запусти компиляцию с MAKE_JOBS_NUMBER=8 и посмотри кол-во инстанций gcc. Их должно быть 8. По дефолту их правда будет в соответствии с кол-вом ядер.
я у ся сконвертил самопальное распараллеливание на то, что закомиттил pav@. Теперь у мя в make.conf
Код: Выделить всё
FORCE_MAKE_JOBS=
MAKE_JOBS_NUMBER!= let $$(sysctl -n kern.smp.cpus) \* 4
.for port in \
emacs-devel cross-binutils libgpg-error perl5.8 libthai \
libiconv m17n-lib nasm tightvnc db47 subversion* \
ghostscript8 pth cdrtools* w3m* xmp libslang2 ezm3 dcget libxml2 \
vim gperf ffcall ORBit2 py-gtk2 xkeyboard-config ruby18 clisp \
jdk16 p7zip zsh libsndfile openjdk6 gettext stumpwm
. if ${.CURDIR:M*/${port}}
MAKE_JOBS_UNSAFE=
. endif
.endfor
впрочем, список я пока не почистил. Много портов уже пофиксили на предмет распараллеливания.
ps, после это фичи PR'ы растут как грибы после дождя :
query-pr-summary.cgi?text=MAKE_JOBS_SAFE
Re: паралельная сборка портов (MAKE_JOBS_SAFE)
Добавлено: 2009-03-26 11:11:48
hizel
грибы - да, спасибо за разъяснения

я тут
http://cia.vc/stats/project/FreeBSD/ через rss мониторю как дила