[sisyphus] Проблемы при генерации config.h.in с помощью autoheader

Eugine Kosenko =?iso-8859-1?q?eugine=2Ekosenko_=CE=C1_gmail=2Ecom?=
Ср Май 24 19:19:30 MSD 2006


Привет всем!

Сейчас занимаюсь сборкой Celestia 1.4.1 из различных исходников под текущий
Сизиф с (нестандартным для ALT Linux) интерфейсом glut. Во время сборки
получаю ошибку примерно следующего содержания:

make[3]: Entering directory `/home/eugine/my/celestia/workplace/src/cel3ds'
if g++ -DHAVE_CONFIG_H -I. -I. -I../.. -I..    -Wnon-virtual-dtor
-Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align
-Wconversion -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings
-DNDEBUG -DNO_DEBUG -O2 -Wformat-security -Wmissing-format-attribute
-fno-exceptions -fno-check-new -fno-common  -O2 -Wall -ffast-math
-fexpensive-optimizations -fomit-frame-pointer  -MT 3dsread.o -MD -MP -MF
".deps/3dsread.Tpo" \
      -c -o 3dsread.o `test -f '3dsread.cpp' || echo './'`3dsread.cpp; \
    then mv -f ".deps/3dsread.Tpo" ".deps/3dsread.Po"; \
    else rm -f ".deps/3dsread.Tpo"; exit 1; \
    fi
In file included from ../celutil/bytes.h:15,
                 from 3dsread.cpp:15:
../../config.h:256: error: declaration of C function `long unsigned int
strlcat(char*, const char*, long unsigned int)' conflicts with
/usr/include/string.h:360: error: previous declaration `size_t
strlcat(char*, const char*, size_t)' here
../../config.h:268: error: declaration of C function `long unsigned int
strlcpy(char*, const char*, long unsigned int)' conflicts with
/usr/include/string.h:368: error: previous declaration `size_t
strlcpy(char*, const char*, size_t)' here

Как я понял, суть в конфликте типов при определении прототипов для функций
strlcat и strlcpy. Однако, сама проблема не в исходниках celestia, так как
эти прототипы определяются в config.h.in, который генерируется autoheader
версии 2.59 из пакета autoconf-common-0.2-alt1.

То есть, как я понял, проблема решается, если в сгенерированном
config.h.inвручную определить параметры HAVE_STRCAT_PROTO (стока 128)
и
HAVE_STRLCPY_PROTO (строка 134), тогда, судя по всему, при компиляции
берутся системные прототипы. Однако, перезапуск autoheader восстанавливает
неправильную ситуацию.

Вопрос первый: это баг или фича? И если баг, то чей -- celestia, autoconf
или конфигурации системы? Если фича -- то что нужно сделать не так?

Вопрос второй: почему эта ошибка не проявляется при стандартной сборке с
интерфейсом kde?

В дополнение:

1. Ошибка возникает при компиляции свежей версии из CVS, официального
выпуска 1.4.1 и альтовского варианта 1.4.1

2. На Gentoo сборка официального выпуска 1.4.1 проходит успешно (других
вариантов не пробовал), что и заставляет подозревать проблемы в
дистрибутиве, а не в приложении. К сожалению, не могу сейчас посмотреть
версию autoheader и сгенерированный config.h.in в Gentoo. Попробую это
сделать позже, когда доберусь до домашнего компа.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/sisyphus/attachments/20060524/3383d9c1/attachment-0003.html>


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