Алексей Махоткин

домашняя страница

Autoconf

Go to the first, previous, next, last section, table of contents.


Исход

По мере получения ответов от пользователей я добавил много улучшений, используя Emacs для поиска и замены, вырезания и вставки, одних и тех же изменений в каждом из скриптов. По мере того, как все большее количество утилит GNU были адаптированы для использования скриптов configure, ручное обновление становилось все более неудобно. Rich Murphey, сопровождавший графические утилиты GNU, послал мне письмо, в котором писал, что скрипты configure работают очень хорошо, и спрашивал, нету ли у меня утилиты для их генерации, и могу ли я послать ее ему. Нет, я думал, но я должен был! Так, что я начал работать над тем, как создавать эти файлы. Так началось путешествие от рабства написанных вручную скриптов configure к изобилию и легкости Autoconf.

Пакет Cygnus configure, который был разработан примерно в то же время, управлялся таблицей; он предназначался в основном для работы с небольшим количеством типов систем и небольшим количеством возможностей, которые по большей части нельзя было автоматически определить (например, детали формата объектных файлов). Автоматическая система настройки, которую Brian Fox разработал для Bash, использовала аналогичный подход. Для общего пользования, мне кажется безнадежной попытка сопровождать постоянно обновляемую базу данных возможностей каждого из вариантов каждой операционной системы. Легче и надежнее будет проверять большинство свойств на лету— особенно на гибридных системах, которые люди изменяли локально, или на которых были установлены заплатки от производителя.

Я рассматривал архитектуру, сходную с используемой в Cygnus configure, где имеется один скрипт configure, который при запуске считывает части `configure.in’. Но я не хотел распространять с каждым пакетом тесты для всех возможностей, так что я пришел к решению иметь разные скрипты configure, созданные из `configure.in’ с помощью препроцессора. Этот подход также представлял больший контроль и большую гибкость.

Я также ознакомился с использованием пакета Metaconfig, созданного Larry Wall, Harlan Stenn и Raphael Manfredi, но я решил не использовать его по нескольким причинам. Создаваемые с его помощью скрипты Configure являются интерактивными, что я нашел достаточно неудобным; мне не понравился способ, каким он проверял некоторые возможности (такие как наличие библиотечных функций); я не знал, сопровождался ли он тогда все еще, а скрипты Configure, которые я рассматривал, не работали на многих современных системах (таких как System V R4 и NeXT); у него не было достаточной гибкости в реакции на наличие или отсутствие какой-либо возможности; я нашел его трудным в освоении; он был слишком большим и сложным для моих нужд (я не осознавал тогда, как сильно придется развить Autoconf).

Я рассматривал использование языка Perl для создания моих скриптов configure, но решил, что m4 лучше для выполнения простых текстовых подстановок: это получается проще, поскольку операция вывода подразумевается по умолчанию. Плюс к тому, каждый пользователь уже имеет его в своей системе. (В начале я не полагался на расширения GNU для m4). Несколько моих друзей в университете штата Maryland создавали надстройки на m4 для разных программ, включая tvtwm, и я был заинтересован в изучении нового языка.


Go to the first, previous, next, last section, table of contents.

Comments