Как скрипт configure решает восстановить себя - PullRequest
5 голосов
/ 05 ноября 2010

Когда я запускаю ./configure, иногда он решает, что он слишком старый, и перезапускает autoconf через отсутствующий скрипт, чтобы восстановить себя.Иногда это приводит к странным сбоям, так как autoconf на целевой машине старше, чем autoconf, который использовался для первоначального создания конфигурации.

Мне было интересно, как он узнал, что он слишком старый?Есть ли стандартный способ настройки для этого?или это зависит от библиотеки.Указатели на документацию будут оценены.

1 Ответ

9 голосов
/ 07 ноября 2010

configure не решает этого: make делает. Если скрипт configure старше configure.ac или любого из включенных в него файлов (начиная с aclocal.m4), то make запускает autoconf для восстановления configure.

Аналогичные правила существуют для перестройки aclocal.m4 с использованием aclocal, а различные Makefile.in с использованием automake.

Эти правила перестроения никогда не должны запускаться после распаковки тарбола на целевой машине, потому что метка времени всех этих файлов в тарболе должна быть правильной (configure новее configure.ac и т. Д.). Поэтому, если это произойдет, либо в вашем tarball что-то не так (как вы не использовали make dist или предпочтительно make distcheck для его генерации), либо пользователь, скомпилировавший исходный код, сделал что-то не так (как, например, копирование всего каталога без сохранения метки времени), или в целевой системе есть что-то фальшивое (например, make обычно не работает должным образом на смонтированном NFS-каталоге, если часы NFS-сервера не синхронизированы с часами клиента).

Еще один частый источник нежелательного восстановления наблюдается людьми, которые хранят сгенерированные файлы в системе контроля версий. См. http://sourceware.org/automake/automake.html#CVS для обсуждения этого вопроса, если это ваш случай.

...