make.conf и другие

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

make.conf и другие

Сообщение Shura »

Возникла такая вот неординарная проблема.
Порты я компилю через 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?
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
exlex
Сообщения: 38
ОС: Gentoo GNU/Linux

Re: make.conf и другие

Сообщение exlex »

тут можно силами самого make.conf обойтись

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

.if  ${.CURDIR} == ${PORTSDIR}/www/firefox3
CC=cc
CXX=c++42
.endif


только у меня ещё там же выше надо этот PORTSDIR определить
Я — внутри; смысл — вне © Генри Лайон Олди «Человек Номоса»
Спасибо сказали:
Аватара пользователя
arachnid
Модератор
Сообщения: 1100
ОС: freeBSD

Re: make.conf и другие

Сообщение arachnid »

у меня для ccache прописано немного другое

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

.if !defined(NO_CACHE)
    CC=  /usr/local/libexec/ccache/world-cc
    CCX= /usr/local/libexec/ccache/world-c++
.endif

.if ${.CURDIR:M*/ports/devel/ccache}
    NO_CCACHE= yes
.endif


фф3 собирается
кстати, при этом можно в /usr/local/etc/pkgtools.conf для сборки фф определить no_cache - тоже должно съесть
-= freeBSD stable, fluxbox =-
"если ты будешь со мной спорить, я тебя запишу в книжечку!" (с) Ежик
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: make.conf и другие

Сообщение Shura »

Спасибо, при следующем обновлении обязательно проверю
Rock'n'roll мертв © БГ
Спасибо сказали:
Аватара пользователя
Shura
Сообщения: 1537
Статус: Оказывается и без KDE есть жизнь
ОС: FreeBSD 8.0-RC2

Re: make.conf и другие

Сообщение Shura »

Действительно работает, спасибо
Rock'n'roll мертв © БГ
Спасибо сказали: