Об использовании autotools
Прочитал недавно статью с критикой GNU Autotools и обрадовался, что я не один недовольный. В статье, в основном, описываются архитектурные дефекты этого набора утилит (точнее описывается отсутствие архитектуры как таковой), а я хочу зафиксировать свои мысли о том, что весь этот набор просто не нужен.
Во-первых, главная цель autotools, как я её понимаю, состоит в том, чтобы код можно было собрать на основных системах без модификаций. Но тестирование наличия кучи каких-то утилит или функций в определённых файлах заголовков вряд ли этому поможет. Мне часто попадаются не самые свежие исходники, которые, не смотря на использование autotools, не хотят собираться из-за того, что какая-то функция перестала возвращать или стала ожидать на входе значение не того типа, или просто потому, что разработчик проигнорировал предупреждения компилятора, которые с тех пор стали ошибками. Очевидно, каждый вздох не протестируешь. Очевидно, autotools — не панацея.
Во-вторых, вряд ли кому-то сейчас нужно, чтобы его код собирался на вообще всех известных системах. На практике есть несколько основных систем, большинство из которых давно уже не имеют разногласий на уровне системных библиотек. Код в этих системах собирается без превращения его в лапшу из директив условной трансляции. Очевидно, разработчики систем целенаправленно работают в этом направлении, и, очевидно, этот путь более эффективен.
В-третьих, если нужна гарантия работы под какой-то необычной системой, то её всё равно не получить вслепую, надеясь только на autotools. Всё равно нужна система для автоматического тестирования новых версий, а для распространённых систем вообще лучше предлагать готовые пакеты, на которые перед сборкой накладывается небольшой патч, корректирующий пути к библиотекам — вот и все изменения. У таких пакетов обычно есть собственный maintainer.
Зачем в таких условиях использовать autotools? Мне кажется это — вредная привычка. Мне кажется давно есть более простые и эффективные решения. Я использую простые файлы сборки (Makefile), мне этого достаточно для успешной сборки кода в системах Debian и FreeBSD.
Следить за развитием событий можно через RSS ленту или почтовую рассылку.