Почему "autoreconf" часто не используется?

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

  • autoreconf --install
  • ./configure
  • make

Однако я заметил, что большинству программных пакетов с открытым исходным кодом (в Linux) не нужен шаг 1. Они больше всего нуждаются в шагах 2 и 3 для сборки. Похоже, что они уже упакованы с помощью Makefile.in. Мне интересно, почему? Они вручную кодируют Makefile.in, или разработчик программного обеспечения использует autoreconf для генерации Makefile.in перед созданием программного пакета?

Спасибо.

Ответ 1

Разработчик программного обеспечения, который создает tarball (или кто проверяет источники из системы управления версиями), обычно вызывает autoreconf из script, называемого bootstrap.sh или autogen.sh, который может делать другие вещи. autoreconf может также вызываться Makefile (например, при изменении configure.ac).

Большинство пользователей никогда не будут запускать autoreconf, даже те, кто вносит некоторые изменения в исходный код (например, исправления). Только тем, кто должен внести изменения в сам пакет (внесение изменений в configure.ac и/или Makefile.am), потребуется autoreconf.

Ответ 2

Запуск autoreconf требует наличия уже установленной версии autotools. Это приводит к проблеме с курицей и яйцом - как вы, в первую очередь, устанавливаете autotools? Он также добавляет дополнительную зависимость, которая не нужна большинству конечных пользователей.

В результате большинство пакетов запускают autoreconf перед созданием исходных tarballs, которые они распространяют. Это означает, что если вы загружаете такой tarball, вы можете настроить и построить его без необходимости сначала устанавливать autotools.