Порты я компилю через distcc совместно с ccache, для этого в /etc/make.conf есть такие строки:
Код: Выделить всё
CC=/usr/local/bin/ccache /usr/local/bin/distcc gcc42
CXX=/usr/local/bin/ccache /usr/local/bin/distcc c++42При запуске portupgrade всё это дело подхватывается и используется, но есть одно "но". Некоторые порты не хотят так компилиться, например firefox. Чтобы его скомпилить приходится принудительно отказываться от ccache и distcc:
Код: Выделить всё
cd /usr/ports/www/firefox3 && make CC=cc CXX=c++Тогда всё компилируется, но теряется автоматизация, предоставляемая portupgrade.
Решил я научить portupgrade прописывать переменные CC и CXX для firefox3, для этого в /usr/local/etc/pkgtools.conf в секцию MAKE_ENV я добавил:
Код: Выделить всё
'www/firefox3' => [
'CC=cc',
'CXX=c++42',
],Всё хорошо, но вот фокс всё равно не компилиуется, на этапе конфигурации я вижу, что он всё равно использует переменные CC и CXX из /etc/make.conf. Хотя после ошибки компиляции я вижу:
gmake[4]: *** [nsStackWalk.o] Ошибка 1
gmake[4]: Leaving directory `/usr/ports/www/firefox3/work/mozilla/xpcom/base'
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20090430-94263-1algpaz-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=firefox-3.0.8,1 UPGRADE_PORT_VER=3.0.8,1 CC=cc CXX=c++42 make CONFIGURE_ARGS+=--disable-gnomeui CONFIGURE_ARGS+=--disable-gnomevfs
Т.е. portupgrade честно прописывает переменные, но они позже переназначаются из файла make.conf
Так вот вопрос состоит в том, как можно поменять порядок чтения переменных окружения, чтобы сначала читался make.conf, а потом уже pkgtools.conf?