* [devel] erlang: asking for a hint, possibly with --as-needed @ 2007-02-10 19:47 Mikhail Yakshin 2007-02-10 19:50 ` Michael Shigorin ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Mikhail Yakshin @ 2007-02-10 19:47 UTC (permalink / raw) To: ALT Devel discussion list Приветствую! Я тут взялся глобально перелопачивать Erlang, в двух словах, результаты следующие: 1. R11B2, который есть в Федоре - устарел, на смену ему официально пришел R11B3, в котором разработчики Эрланга наконец-то проснулись и поняли, что какой год на дворе и какая glibc. Федоровские патчи при этом не нужны, они вроде бы все вошли в апстрим и применены там в менее хакообразном виде. Собрать Федоровскую RPMку и R11B2 у нас малореально. 2. Эрланг - это довольно объемный пакет, собирается где-то по 30-40 минут на сборку. Сборочное окружение субъективно мною характеризуется как "невменяемое": масса хаков вокруг autoconf на тему поддержки совместимости с win32, вывернутая наизнанку схема генерации Makefile <-> Makefile.in, и, самое главное, ошибка при сборке где-нибудь посередине не приводит к остановке сборки, а компиляция продолжается, в итоге получается нечто, что собирается и ставится, но в нем не все работает. Возникла даже мысль может быть собирать его не просто make, а чем-то вроде: make >tempfile grep -qe '^make:.* Error ' tempfile && false чтобы он хотя бы падал и не давал неработающей сборки 3. Проблемы в #10657 побеждены посредством -fno-stack-protector, как в Ubuntu. 4. Сама сборка пестрит большим количеством warning'ов об undefined symbol в verify-elf (потому что там масса .so-шек, подгружаются виртуальной машиной на лету, как плагины) и одним TEXTREL'ом в районе сборки с openssl - оно у нас там уже давно стоит на relaxed. 5. Есть проблема со сборкой erl_interface - это некий компонент erlang (интерфейс к C), без которого он работать теоретически может, но ejabberd без него не соберется. Я подозреваю, что проблема в --as-needed и порядке линковки. На других системах (Fedora, BSD, Debian), люди говорят, что все собирается. Кусок лога: gcc -pipe -Wall -O2 -march=i586 -mtune=i686 -fno-stack-protector -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -fno-strict-aliasing -I. -I../include -Iconnect -Iencode -Idecode -Imisc -Iepmd -Iregistry -Ii686-pc-linux-gnu -Ilegacy -o /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/bin/i686-pc-linux-gnu/erl_call prog/erl_call.c prog/erl_start.c \ -L/home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu -lei -lrt -lresolv -lnsl /tmp/.private/greycat/ccawXslX.o: In function `main': erl_call.c:(.text+0x1994): undefined reference to `__erl_errno' /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): In function `ei_do_receive_msg': ei_connect.c:(.text+0x2d6): undefined reference to `__erl_errno' ei_connect.c:(.text+0x319): undefined reference to `__erl_errno' ei_connect.c:(.text+0x331): undefined reference to `__erl_errno' /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): In function `ei_rpc_from': ei_connect.c:(.text+0x512): undefined reference to `__erl_errno' /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o):ei_connect.c:(.text+0x532): more undefined references to `__erl_errno' follow collect2: ld returned 1 exit status make[4]: *** [/home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/bin/i686-pc-linux-gnu/erl_call] Error 1 Подскажите, что тут можно проверить и куда смотреть? -- WBR, Mikhail Yakshin AKA GreyCat ALT Linux [http://www.altlinux.ru] [xmpp:greycat@altlinux.org] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:47 [devel] erlang: asking for a hint, possibly with --as-needed Mikhail Yakshin @ 2007-02-10 19:50 ` Michael Shigorin 2007-02-10 19:59 ` Mikhail Yakshin 2007-02-10 20:21 ` Sergey Vlasov ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Michael Shigorin @ 2007-02-10 19:50 UTC (permalink / raw) To: ALT Devel discussion list On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: > Возникла даже мысль может быть собирать его не просто make, а чем-то вроде: > make >tempfile 2>tempfile? > grep -qe '^make:.* Error ' tempfile && false -- ---- WBR, Michael Shigorin <mike@altlinux.ru> ------ Linux.Kiev http://www.linux.kiev.ua/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:50 ` Michael Shigorin @ 2007-02-10 19:59 ` Mikhail Yakshin 2007-02-10 20:18 ` Sergey Vlasov 0 siblings, 1 reply; 9+ messages in thread From: Mikhail Yakshin @ 2007-02-10 19:59 UTC (permalink / raw) To: ALT Devel discussion list Michael Shigorin wrote: > On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: >> Возникла даже мысль может быть собирать его не просто make, а чем-то вроде: >> make >tempfile > > 2>tempfile? Ну, на самом деле я сам делаю даже make >tempfile 2>&1... -- WBR, Mikhail Yakshin AKA GreyCat ALT Linux [http://www.altlinux.ru] [xmpp:greycat@altlinux.org] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:59 ` Mikhail Yakshin @ 2007-02-10 20:18 ` Sergey Vlasov 0 siblings, 0 replies; 9+ messages in thread From: Sergey Vlasov @ 2007-02-10 20:18 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 392 bytes --] On Sat, Feb 10, 2007 at 10:59:41PM +0300, Mikhail Yakshin wrote: > Michael Shigorin wrote: > > On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: > >> Возникла даже мысль может быть собирать его не просто make, а чем-то вроде: > >> make >tempfile > > > > 2>tempfile? > > Ну, на самом деле я сам делаю даже make >tempfile 2>&1... Тогда уж make 2>&1 | tee tempfile. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:47 [devel] erlang: asking for a hint, possibly with --as-needed Mikhail Yakshin 2007-02-10 19:50 ` Michael Shigorin @ 2007-02-10 20:21 ` Sergey Vlasov 2007-02-10 20:23 ` Dmitry V. Levin 2007-02-11 2:17 ` Alexey Borovskoy 3 siblings, 0 replies; 9+ messages in thread From: Sergey Vlasov @ 2007-02-10 20:21 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1799 bytes --] On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: > gcc -pipe -Wall -O2 -march=i586 -mtune=i686 -fno-stack-protector -Wall > -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations > -Wnested-externs -Winline -fno-strict-aliasing -I. -I../include > -Iconnect -Iencode -Idecode -Imisc -Iepmd -Iregistry -Ii686-pc-linux-gnu > -Ilegacy -o > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/bin/i686-pc-linux-gnu/erl_call > prog/erl_call.c prog/erl_start.c \ > > -L/home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu > -lei -lrt -lresolv -lnsl > /tmp/.private/greycat/ccawXslX.o: In function `main': > erl_call.c:(.text+0x1994): undefined reference to `__erl_errno' > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): > In function `ei_do_receive_msg': > ei_connect.c:(.text+0x2d6): undefined reference to `__erl_errno' > ei_connect.c:(.text+0x319): undefined reference to `__erl_errno' > ei_connect.c:(.text+0x331): undefined reference to `__erl_errno' > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): > In function `ei_rpc_from': > ei_connect.c:(.text+0x512): undefined reference to `__erl_errno' > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o):ei_connect.c:(.text+0x532): > more undefined references to `__erl_errno' follow > collect2: ld returned 1 exit status А в какой библиотеке определяется __erl_errno? Тут дело, похоже, даже не в --as-needed, а в отсутствии нужной библиотеки в командной строке - перед erl_call.c никаких библиотек, которые могли бы потеряться из-за --as-needed, нет. Возможно, где-то опять сдурел какой-то configure. [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:47 [devel] erlang: asking for a hint, possibly with --as-needed Mikhail Yakshin 2007-02-10 19:50 ` Michael Shigorin 2007-02-10 20:21 ` Sergey Vlasov @ 2007-02-10 20:23 ` Dmitry V. Levin 2007-02-11 20:24 ` Mikhail Yakshin 2007-02-11 2:17 ` Alexey Borovskoy 3 siblings, 1 reply; 9+ messages in thread From: Dmitry V. Levin @ 2007-02-10 20:23 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 3248 bytes --] On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: > Я тут взялся глобально перелопачивать Erlang Значит, всеобщее счастье не за горами. :) > 2. Эрланг - это довольно объемный пакет, собирается где-то по 30-40 > минут на сборку. На каких мощностях? Тот пакет, который сейчас в Сизифе, собирается раза в 2 быстрее. > Сборочное окружение субъективно мною характеризуется > как "невменяемое": масса хаков вокруг autoconf на тему поддержки > совместимости с win32, вывернутая наизнанку схема генерации > Makefile <-> Makefile.in, Это как? Из Makefile формируются Makefile.in? > и, самое главное, ошибка при сборке где-нибудь посередине > не приводит к остановке сборки, а компиляция продолжается, в итоге > получается нечто, что собирается и ставится, но в нем не все работает. > > Возникла даже мысль может быть собирать его не просто make, а чем-то вроде: > > make >tempfile > grep -qe '^make:.* Error ' tempfile && false > > чтобы он хотя бы падал и не давал неработающей сборки В запущенных случаях это вполне естественная мысль. > 3. Проблемы в #10657 побеждены посредством -fno-stack-protector, как в > Ubuntu. На первом этапе это логичное решение, но потом придётся найти что-то получше. > 4. Сама сборка пестрит большим количеством warning'ов об undefined > symbol в verify-elf (потому что там масса .so-шек, подгружаются > виртуальной машиной на лету, как плагины) и одним TEXTREL'ом в районе > сборки с openssl - оно у нас там уже давно стоит на relaxed. Во что превращается этот TEXTREL на x86-64? > 5. Есть проблема со сборкой erl_interface - это некий компонент erlang > (интерфейс к C), без которого он работать теоретически может, но > ejabberd без него не соберется. > > Я подозреваю, что проблема в --as-needed и порядке линковки. На других > системах (Fedora, BSD, Debian), люди говорят, что все собирается. Кусок > лога: > > gcc -pipe -Wall -O2 -march=i586 -mtune=i686 -fno-stack-protector -Wall > -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations > -Wnested-externs -Winline -fno-strict-aliasing -I. -I../include > -Iconnect -Iencode -Idecode -Imisc -Iepmd -Iregistry -Ii686-pc-linux-gnu > -Ilegacy -o > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/bin/i686-pc-linux-gnu/erl_call > prog/erl_call.c prog/erl_start.c \ > > -L/home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu > -lei -lrt -lresolv -lnsl > /tmp/.private/greycat/ccawXslX.o: In function `main': > erl_call.c:(.text+0x1994): undefined reference to `__erl_errno' > /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): > In function `ei_do_receive_msg': > ei_connect.c:(.text+0x2d6): undefined reference to `__erl_errno' > ei_connect.c:(.text+0x319): undefined reference to `__erl_errno' > ei_connect.c:(.text+0x331): undefined reference to `__erl_errno' Так и есть, libei.a не слинковано с тем, что содержит определение символа __erl_errno. > Подскажите, что тут можно проверить и куда смотреть? Посмотреть в лог сборки libei.a -- скорее всего там неправильный порядок линкуемых библиотек или даже просто нет нужной линкуемой библиотеки. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 20:23 ` Dmitry V. Levin @ 2007-02-11 20:24 ` Mikhail Yakshin 2007-02-11 21:33 ` Dmitry V. Levin 0 siblings, 1 reply; 9+ messages in thread From: Mikhail Yakshin @ 2007-02-11 20:24 UTC (permalink / raw) To: ALT Devel discussion list Dmitry V. Levin wrote: > On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: >> Я тут взялся глобально перелопачивать Erlang > > Значит, всеобщее счастье не за горами. :) Я, пожалуй, не так сильно оптимистичен... >> 2. Эрланг - это довольно объемный пакет, собирается где-то по 30-40 >> минут на сборку. > > На каких мощностях? Тот пакет, который сейчас в Сизифе, собирается раза в > 2 быстрее. Видимо, на сборочных серверах и полностью в tmpfs. Какой смысл сравнивать? >> Сборочное окружение субъективно мною характеризуется >> как "невменяемое": масса хаков вокруг autoconf на тему поддержки >> совместимости с win32, вывернутая наизнанку схема генерации >> Makefile <-> Makefile.in, > > Это как? Из Makefile формируются Makefile.in? Все Makefile, как правило, не генерящиеся. В них записано по 3 строчки вроде: include $(ERL_TOP)/make/target.mk include $(ERL_TOP)/make/$(TARGET)/otp.mk include $(ERL_TOP)/make/otp_subdir.mk Через несколько уровней вызовов этих мейкфайлов из $(ERL_TOP)/make/, которые там что-то у себя внутри детектят, дефайнят и в зависимости от этого принимают какие-то решения, в итоге каким-то образом управление передается в Makefile.in, лежащий в той же директории, тоже не генерящийся. Масла в огонь подливает то, что по сути там не 1 проект, а под сотню разных проектов, вложенных друг в друга. В некоторых местах иерархии есть свой корень, свой собственный configure и там целое отдельное приложение, библиотека или статический object >> 3. Проблемы в #10657 побеждены посредством -fno-stack-protector, как в >> Ubuntu. > > На первом этапе это логичное решение, но потом придётся найти что-то > получше. Чем дальше я копаюсь с erlang - тем больше убеждаюсь в том, что это такое нечто, которое проще как-то собрать, забыть и не трогать, пока не сломается что-то критичное. По хорошему - там надо бы начинать с полной перестройки всей системы сборки, его раскладывания файлов (которое абсолютно не соответствует идеологии FHS) и т.п. На Erlang, насколько я понял, есть целых 2 приложения для простых смертных в этом мире: ejabberd (xmpp-сервер) и yaws (http-сервер). Остальное - огромная куча какого-то проприетарного и очень специфичного софта для телефонии имени самого Ericson'а и т.п. >> 4. Сама сборка пестрит большим количеством warning'ов об undefined >> symbol в verify-elf (потому что там масса .so-шек, подгружаются >> виртуальной машиной на лету, как плагины) и одним TEXTREL'ом в районе >> сборки с openssl - оно у нас там уже давно стоит на relaxed. > > Во что превращается этот TEXTREL на x86-64? Пока еще не добрался. >> 5. Есть проблема со сборкой erl_interface - это некий компонент erlang >> (интерфейс к C), без которого он работать теоретически может, но >> ejabberd без него не соберется. >> >> Я подозреваю, что проблема в --as-needed и порядке линковки. На других >> системах (Fedora, BSD, Debian), люди говорят, что все собирается. Кусок >> лога: >> >> gcc -pipe -Wall -O2 -march=i586 -mtune=i686 -fno-stack-protector -Wall >> -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations >> -Wnested-externs -Winline -fno-strict-aliasing -I. -I../include >> -Iconnect -Iencode -Idecode -Imisc -Iepmd -Iregistry -Ii686-pc-linux-gnu >> -Ilegacy -o >> /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/bin/i686-pc-linux-gnu/erl_call >> prog/erl_call.c prog/erl_start.c \ >> >> -L/home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu >> -lei -lrt -lresolv -lnsl >> /tmp/.private/greycat/ccawXslX.o: In function `main': >> erl_call.c:(.text+0x1994): undefined reference to `__erl_errno' >> /home/greycat/RPM/BUILD/otp_src_R11B-3/lib/erl_interface/obj/i686-pc-linux-gnu/libei.a(ei_connect.o): >> In function `ei_do_receive_msg': >> ei_connect.c:(.text+0x2d6): undefined reference to `__erl_errno' >> ei_connect.c:(.text+0x319): undefined reference to `__erl_errno' >> ei_connect.c:(.text+0x331): undefined reference to `__erl_errno' > > Так и есть, libei.a не слинковано с тем, что содержит определение > символа __erl_errno. > >> Подскажите, что тут можно проверить и куда смотреть? > > Посмотреть в лог сборки libei.a -- скорее всего там неправильный порядок > линкуемых библиотек или даже просто нет нужной линкуемой библиотеки. Понятно, спасибо. libei.a собирается вполне обычным способом из следующих objects в таком порядке: > ei_connect.o ei_resolve.o eirecv.o send.o send_exit.o send_reg.o decode_atom.o decode_big.o decode_bignum.o decode_binary.o decode_boolean.o decode_char.o decode_double.o decode_fun.o decode_intlist.o decode_list_header.o decode_long.o decode_pid.o decode_port.o decode_ref.o decode_skip.o decode_string.o decode_trace.o decode_tuple_header.o decode_ulong.o decode_version.o decode_longlong.o decode_ulonglong.o encode_atom.o encode_bignum.o encode_binary.o encode_boolean.o encode_char.o encode_double.o encode_fun.o encode_list_header.o encode_long.o encode_pid.o encode_port.o encode_ref.o encode_string.o encode_trace.o encode_tuple_header.o encode_ulong.o encode_version.o encode_longlong.o encode_ulonglong.o epmd_port.o epmd_publish.o epmd_unpublish.o ei_decode_term.o ei_format.o ei_locking.o ei_malloc.o ei_portio.o ei_printterm.o > ei_pthreads.o ei_trace.o ei_x_encode.o eimd5.o get_type.o show_msg.o ei_compat.o hash_dohash.o hash_foreach.o hash_freetab.o hash_insert.o hash_isprime.o hash_lookup.o hash_newtab.o hash_remove.o hash_resize.o hash_rlookup.o reg_close.o reg_delete.o reg_dirty.o reg_dump.o reg_free.o reg_get.o reg_getf.o reg_geti.o reg_getp.o reg_gets.o reg_make.o reg_open.o reg_purge.o reg_resize.o reg_restore.o reg_set.o reg_setf.o reg_seti.o reg_setp.o reg_sets.o reg_stat.o reg_tabstat.o Значком ">" я отметил интересующие нас сейчас objects. Определяться __erl_errno должна по идее в ei_pthreads.o, а используется в ei_connect.o. Только здесь какая-то ерунда получается: если посмотреть в ei.h, то там эта переменная определена как: #if defined(_REENTRANT) || defined(VXWORKS) || defined(__WIN32__) /* 'erl_errno' as a function return value */ volatile int* __erl_errno_place(void) __attribute__ ((__const__)); #define erl_errno (*__erl_errno_place ()) #else /* !_REENTRANT && !VXWORKS && !__WIN32__ */ extern volatile int __erl_errno; #define erl_errno __erl_errno #endif /* !_REENTRANT && !VXWORKS && !__WIN32__ */ Насколько я понял - _REENTRANT - это какой-то флаг-характеристика системы. Не знаю, должен он быть установлен он у нас или нет и за что отвечает (гугл однозначного ответа на этот вопрос не дает), но, в данном случае, насколько я проверил - не установлен. В итоге у нас есть простое определение переменной и просто алиас на нее: extern volatile int __erl_errno; #define erl_errno __erl_errno В ei_pthreads.c же, где по идее и должно быть реальное объявление (без extern) этой переменной, есть 2 варианта ее определения: 1. volatile __declspec(thread) int __erl_errno = 0; 2. static volatile int __erl_errno; Вариант 1 засунут под ifdef __WIN32__, вариант 2 - под ifdef VXWORKS. У нас, очевидно, ни один из них. В итоге что получается, когда есть extern, но нет реально объявленной переменной? К коду ei_connect.c претензий нет - там все достаточно чисто - используется именно erl_errno, запрос к __erl_errno получается именно из-за дефайна. Видимо, на всех тех машинах, где Erlang собирается под Linux/BSD, стоит этот _REENTRANT => нет такого понятия, как __erl_errno вообще? Есть какие-то мысли, как это правильно исправить? Все упирается, видимо, в то, что такое дефайн _REENTRANT, почему у нас его нет и что сломается от того, если я его определю? Плюс, после того, как разберемся с этим вопросом, ei_pthreads.o и ei_connect.o в порядке линковки надо поменять местами, я правильно понимаю? -- WBR, Mikhail Yakshin AKA GreyCat ALT Linux [http://www.altlinux.ru] [xmpp:greycat@altlinux.org] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-11 20:24 ` Mikhail Yakshin @ 2007-02-11 21:33 ` Dmitry V. Levin 0 siblings, 0 replies; 9+ messages in thread From: Dmitry V. Levin @ 2007-02-11 21:33 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 2353 bytes --] On Sun, Feb 11, 2007 at 11:24:09PM +0300, Mikhail Yakshin wrote: > Dmitry V. Levin wrote: > > On Sat, Feb 10, 2007 at 10:47:51PM +0300, Mikhail Yakshin wrote: > >> Я тут взялся глобально перелопачивать Erlang > > > > Значит, всеобщее счастье не за горами. :) > > Я, пожалуй, не так сильно оптимистичен... Я среагировал на "глобально перелопачивать". > >> 2. Эрланг - это довольно объемный пакет, собирается где-то по 30-40 > >> минут на сборку. > > > > На каких мощностях? Тот пакет, который сейчас в Сизифе, собирается раза в > > 2 быстрее. > > Видимо, на сборочных серверах и полностью в tmpfs. Какой смысл сравнивать? Это я прозрачно намекаю на пользу, которую ты мог бы извлечь из сборочных серверов. > Насколько я понял - _REENTRANT - это какой-то флаг-характеристика > системы. Не знаю, должен он быть установлен он у нас или нет и за что > отвечает (гугл однозначного ответа на этот вопрос не дает), но, в данном > случае, насколько я проверил - не установлен. $ info libc 'Feature Test Macros' Macro: _REENTRANT Macro: _THREAD_SAFE If you define one of these macros, reentrant versions of several functions get declared. Some of the functions are specified in POSIX.1c but many others are only available on a few other systems or are unique to GNU libc. The problem is the delay in the standardization of the thread safe C library interface. Unlike on some other systems, no special version of the C library must be used for linking. There is only one version but while compiling this it must have been specified to compile as thread safe. > Видимо, на всех тех машинах, где Erlang собирается под Linux/BSD, стоит > этот _REENTRANT => нет такого понятия, как __erl_errno вообще? Есть > какие-то мысли, как это правильно исправить? Все упирается, видимо, в > то, что такое дефайн _REENTRANT, почему у нас его нет и что сломается от > того, если я его определю? Надо смотреть в документацию по системе сборки или (если таковой нет) в исходный код. Возможно, от включения _REENTRANT ничего не сломается. > Плюс, после того, как разберемся с этим вопросом, ei_pthreads.o и > ei_connect.o в порядке линковки надо поменять местами, я правильно понимаю? Нет, --as-needed на сборку статических библиотек не влияет, так что порядок линковки *.o-файлов тут не важен. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] erlang: asking for a hint, possibly with --as-needed 2007-02-10 19:47 [devel] erlang: asking for a hint, possibly with --as-needed Mikhail Yakshin ` (2 preceding siblings ...) 2007-02-10 20:23 ` Dmitry V. Levin @ 2007-02-11 2:17 ` Alexey Borovskoy 3 siblings, 0 replies; 9+ messages in thread From: Alexey Borovskoy @ 2007-02-11 2:17 UTC (permalink / raw) To: ALT Devel discussion list -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Mikhail Yakshin пишет: > Приветствую! > > Я тут взялся глобально перелопачивать Erlang, в двух словах, результаты > следующие: > > 1. R11B2, который есть в Федоре - устарел, на смену ему официально > пришел R11B3, в котором разработчики Эрланга наконец-то проснулись и > поняли, что какой год на дворе и какая glibc. Федоровские патчи при этом > не нужны, они вроде бы все вошли в апстрим и применены там в менее > хакообразном виде. Собрать Федоровскую RPMку и R11B2 у нас малореально. > > 2. Эрланг - это довольно объемный пакет, собирается где-то по 30-40 > минут на сборку. Сборочное окружение субъективно мною характеризуется > как "невменяемое": масса хаков вокруг autoconf на тему поддержки > совместимости с win32, вывернутая наизнанку схема генерации Makefile <-> > Makefile.in, и, самое главное, ошибка при сборке где-нибудь посередине > не приводит к остановке сборки, а компиляция продолжается, в итоге > получается нечто, что собирается и ставится, но в нем не все работает. У меня в git.alt есть такое: R10B-10 R10B.10-alt0.M24.1 R10B.10-alt0.M30.1 R11B-0 R11B-1 Причем R11 я победить не смог. Там неправильно собирается erl_interface. - -- Алексей. GPG key fingerprint DBB3 1832 13C6 5C96 4A58 4AFF 78F7 159F 66AD 8D7E -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFFzny9ePcVn2atjX4RAqfjAJ95zz6Dd7XmK3Ks40a5M8jFeHJqkACdEOAn AxsVJpUeHGv+kefrWJ/2DxQ= =JNxc -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-02-11 21:33 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-02-10 19:47 [devel] erlang: asking for a hint, possibly with --as-needed Mikhail Yakshin 2007-02-10 19:50 ` Michael Shigorin 2007-02-10 19:59 ` Mikhail Yakshin 2007-02-10 20:18 ` Sergey Vlasov 2007-02-10 20:21 ` Sergey Vlasov 2007-02-10 20:23 ` Dmitry V. Levin 2007-02-11 20:24 ` Mikhail Yakshin 2007-02-11 21:33 ` Dmitry V. Levin 2007-02-11 2:17 ` Alexey Borovskoy
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git