паралельная сборка портов (MAKE_JOBS_SAFE)

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

паралельная сборка портов (MAKE_JOBS_SAFE)

Непрочитанное сообщение hizel » 2009-03-26 9:34:14

Последнее время наблюдаю много коммитов с маркированием портов MAKE_JOBS_SAFE for SMP compilation
интересно а как эту фкусность использовать
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: паралельная сборка портов (MAKE_JOBS_SAFE)

Непрочитанное сообщение zingel » 2009-03-26 9:41:22

Код: Выделить всё

echo "MAKE_JOBS_SAFE=yes" >> /etc/make.conf
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: паралельная сборка портов (MAKE_JOBS_SAFE)

Непрочитанное сообщение hizel » 2009-03-26 9:44:07

нэээ :no:
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

Код: Выделить всё

MAKE_JOBS_SAFE= yes
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Гость
проходил мимо

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

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: паралельная сборка портов (MAKE_JOBS_SAFE)

Непрочитанное сообщение hizel » 2009-03-26 11:11:48

грибы - да, спасибо за разъяснения :)
я тут http://cia.vc/stats/project/FreeBSD/ через rss мониторю как дила
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.