crosscompiling через distcc [SOLVED]

ситуация следующая

Есть сервер(i686), есть ноутбук(amd64)

настроил subj

возникли несколько вопросов

1.собираю kde на ноутбуке, через crossdev компиляция так же выполняется на сервере

Вопрос в следующем - с какими параметрами компиляции? Теми, что на ноутбуке в make.conf или они где то задаются, если да, то где?

2. При настройке указал

distcc-config --set-host "192.168.0.1 192.168.0.20"

первый соответственно сервер, второй ноутбук

Вопрос - правильно ли указано или ту машину на которой выполняетя emerge *** не нужно добавлять в список хостов? Или на ней и так компиляется? просто distccmon-text без указания ноутбука в конфиге выдает , что только на сервер компилируется. Может просто то, что локально компилица он не пишет?
если все-таки убрать из списка хостов ip ноутбука то 3 вопрос вроде даже не возникает...

И вообще важен ли порядок указания?

3. И последний вопрос

во время компиляции некоторых пакетов возникает ошибка

In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr.h:115,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++io.h:39,
		 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/iosfwd:48,
		 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/ios:46,
		 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/istream:46,
		 from /usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/fstream:46,
		 from DB2_db.cc:26
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h:88: error: weakref 'int __gthrw_pthread_once(pthread_once_t*, void (*)())' must have static linkage # таких надписей обычно пачка - штук 20 с разными файлами


...
distcc[11053] ERROR: compile DB2_db.cc on 192.168.0.1 failed
make[1]: *** [DB2_db.lo] Error 1

...
make[1]: *** [ParsedString.lo] Error 1
make[1]: Leaving directory `/var/tmp/portage/www-misc/htdig-3.2.0_beta6-r3/work/htdig-3.2.0b6/htlib'
make: *** [all-recursive] Error 1

Во время установки kde (~100 пакетов) пакетов 10 точно вылетело с подобной ошибкой. Повторная попытка установки имеет такой же результат

при отключении distcc компиляция проходит успешно

Соответсвенно вопрос - может чо-то неправильно настроил?
Или может эти пакеты просто не могут быть распределенно скомпилированы, тогда может можно как нить настроить чтоб в таких случаях конкретные пакеты компилировались локально, без использования distcc??

скорее всего

скорее всего настроил не правильно. на ru.gentoo-wiki.com есть статья по настройке crossdev distcc

По поводу

По поводу порядка - надо указывать от наиболее мощного к меньшему - в нашем случае ноут первый сервер второй
С кросскомпиляцией правда не сталкивался но distcc сам по себе работает отлично

да настроил то

да настроил то правильно
http://www.gentoo.org/doc/en/distcc.xml
http://www.gentoo.org/doc/en/cross-compiling-distcc.xml

Впрочем я нашел возможно причину -
gcc в тулчейне по дефолту собирается почемуто из ~arch (4.2.3), точнее весь тулчейн собирается из ~arch. Надо прописывать crossdev -S при создании тулчейна, чтоб собрать из стабильной ветки...

щаз пересоберу буду пробовать

Самое интересное, что у меня полмира и X на ноутбуке cобрано с использованием двух разных версий gcc - 4.1.2 на ноуте и 4.2.3 на сервере... Вроде все ок...
_______________________________________________________________

блин, целый час потерял из-за того, что забыл вырубить FEATURES="distcc"
компиляция gcc упорно валилась с одной и той же ошибкой (чо-то такое - "не могу запустить configure")

К сожалению не

К сожалению не удается мне скомпилять стабильный тулчейн (

на gcc stage 1 вылетает с ошибкой

lsf=""; for f in $lsf; do \
            echo "#include \"$f\""; \
        done | sed 's|/var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/||' > tmp-specs.h
/bin/sh /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/../move-if-change tmp-gtyp.h gtyp-gen.h
/bin/sh /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/../move-if-change tmp-specs.h specs.h
echo timestamp > s-gtyp-gen
rm -f mm_malloc.h
echo timestamp > s-specs
cat /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/config/i386/pmm_malloc.h > mm_malloc.h
if [ -f `echo /usr/x86_64-pc-linux-gnu/usr/include | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`/limits.h ] ; then \
          cat /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/limitx.h /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/glimits.h /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/limity.h > tmp-xlimits.h; \
        else \
          cat /var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/gcc-4.1.2/gcc/glimits.h > tmp-xlimits.h; \
        fi
make[2]: *** No rule to make target `/usr/bin/x86_64-pc-linux-gnu-as', needed by `stamp-as'.  Stop.
make[2]: *** Waiting for unfinished jobs....
mv tmp-xlimits.h xlimits.h
make[2]: Leaving directory `/var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/build/gcc'
make[1]: *** [all-gcc] Error 2
make[1]: Leaving directory `/var/tmp/cross/x86_64-pc-linux-gnu/portage/cross-x86_64-pc-linux-gnu/gcc-4.1.2/work/build'
make: *** [all] Error 2

никаких более вменяемых надписей для идентификации ошибки не найдено...
соответственно привожу последние строки

PS повторная сбока ~arch (gcc 4.2.3) тулчейна проходит нормально...

_____________________________________________________________________

полная чистка системы от всех упоминаний x86_64 дала положительный результат - все собралось )

соответственно на ноуте нужно все так же вычистить от i686 и собрать там стабильный тулчейн, чтобы в обе стороны distcc нормально работал...

буду надеяться от 3 проблемы из первого сообщения я избавился )

Я смотрю

Я смотрю пользующихся этим функционалом не много, но все же хотелось бы подитожить...

Тема решена - далее по пунктам

1.Параметры компиляции - предположительно берутся всеже с системы-источника задачи, во всяком случае обратного я не нашел(собстно вообще упоминаний об ентом я неигде не увидел)
2.Указывать нужно все используемые хосты - упоминание об ентом есть в хендбуке. На счет порядка - информация от bober2000 вероятно правдива, во всяком случае визуально, через distccmon больше задач выполняется на том хосте который идет в списке первым. Хотя опять же никакой информации по данному вопросу найдено не было
3.По вопросу ошибок компиляции - будьте внимательнее с версиями пакетов в тулчейне, они должны быть аналогичны на всех хостах. Информация об ентом есть в howto по ссылкам приведенным мною выше, но информации о том, что по дефолту все собирается из ~arch нигде я не увидел. Соответсвенно, если на хостах используете стабильную ветку собирайте тулчейн с crossdev -S, либо четко указывайте версии пакетов.

Собстно все, вопрос решен, тема закрыта.
Всем спасибо ))

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".