[sisyphus] nut-2.4.3

Evgeny Sinelnikov sin на altlinux.ru
Сб Июн 12 13:12:36 UTC 2010


12 июня 2010 г. 14:36 пользователь Алексей Шенцев <ashen на nsrz.ru> написал:
> On 12.06.2010 13:49, Evgeny Sinelnikov wrote:
>> Вопрос поставлен некорректно. Без детального разбора configure.in и
>> очередного велосипеда m4/nut_check_libnetsnmp.m4, в этом проекте,
>> что-то вразумительное сказать сложно.
>>
>> Как минимум, требовалось показать вывод ./configure --with-snmp:
>> ....
>> checking for Net-SNMP version via net-snmp-config... 5.4.2.1 found
>> checking for Net-SNMP cflags... -pipe -Wall -O2 -march=i586
>> -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT
>> -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe
>> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
>> -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include
>> checking for Net-SNMP libs... -lcrypto -lnetsnmp
>> checking for net-snmp/net-snmp-config.h... yes
>> checking for init_snmp... no
>> ...
>>
>> А также config.log:
>> ...
>> configure:7937: checking for init_snmp
>> configure:7937: gcc -o conftest -pipe -Wall -O2 -march=i586
>> -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT
>> -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -
>> pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
>> -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include  -lcrypto
>> -lnetsnmp conftest.c  >&5
>> /home/sin/tmp/cc1QhzbR.o: In function `main':
>> conftest.c:(.text+0x7): undefined reference to `init_snmp'
>> collect2: ld returned 1 exit status
>> configure:7937: $? = 1
>> ...
>>
>> Проверяем. Копируем в файлик тестовый код из config.log (файлик прилагаю):
>> ....
>> char init_snmp ();
>>
>> int
>> main ()
>> {
>> return init_snmp ();
>>   ;
>>   return 0;
>> }
>>
>> Пробуем собрать:
>> $ gcc -o conftest -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux
>> -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE
>> -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE
>> -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
>> -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include  -lcrypto
>> -lnetsnmp init_snmp.c
>> /home/sin/tmp/cc1kacWf.o: In function `main':
>> init_snmp.c:(.text+0x7): undefined reference to `init_snmp'
>> collect2: ld returned 1 exit status
>>
>> Пробуем собрать правильно:
>> $ gcc -o conftest -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux
>> -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE
>> -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE
>> -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
>> -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include init_snmp.c
>> -lcrypto -lnetsnmp
>>
>> Сработало...
>>
>>
> угу ...
>
>> И вот теперь самый главный вопрос, с которого стоило начинать. Почему
>> проверка вида:
>>  AC_CHECK_FUNCS(init_snmp, [], [nut_have_libnetsnmp=no])
>> в файле m4/nut_check_libnetsnmp.m4 ставит $LDFLAGS в строке сборки
>> перед компилируемым файлом, а не после?
>>
> Хороший вопрос ...
>
>> С другой стороны, может быть так оно всегда и было? Может это так
>> гайки в gcc у нас закручены?
>>
>> Насколько мне известно гайки у нас уже давно закручены. И, начиная с
>> этого момента, мне уже не совсем понятно что нужно чинить. Сам nut или
>> какие-то детали autotools.
>>
> Хороший вопрос. В своё время я тупо пересобрал nut-2.2.2, взяв его у
> amike@ - до сих пор на боевом серваке пашет. И пашет хорошо. Потом им
> решил заняться solo@, но так дальше его гита дело не пошло. На сколько
> мне известно ldv@ nut'ом больше не занимается. Мне надо рабочий nut, а
> не та тухлятина 2.0.5, тчо у нас в сизифе - пересобраться,
> пересобирается. но не стартует и работаьь отказывается.
>

Ну, починить сборку этого пакета не очень сложно. Весь вопрос в том
как... И, конечно, это не лишает пакета его родных проблем, даже если
их раньше не было...

Я бы сначала, хотел услышать аргументы в пользу, или наоброт, кривости
работы autotools подставляющих LDFLAGS перед исходников, а не после.

Кто-нибудь может ответить, AC_CHECK_FUNCS, в вышеописанном примере,
правильно себя ведёт или нет?

-- 
Sin (Sinelnikov Evgeny)


Подробная информация о списке рассылки Sisyphus