AM_MAINTAINER_MODE
было подвергнуто критике, и я считаю, что основное возражение состоит в том, что оно приводит к неправильным построениям, если зависимости от метафайлов не обнаружены. Кроме того, часто утверждается, что сгенерированные файлы не принадлежат системам контроля версий (я согласен с этой позицией). В настоящее время я считаю, что если configure
не принадлежит к vcs, то configure.ac
и Makefile.am
не принадлежат к tarball. С этой целью я написал простой скрипт для очистки определенных целей из Makefile.in и добавил следующую цель в Makefile.am верхнего уровня:Распространение метафайлов автонастройки
dist-hook:
@rm $(distdir)/configure.ac
@rm $(distdir)/aclocal.m4
@find $(distdir) -name Makefile.am -exec rm {} \;
@find $(distdir) -name Makefile.in -exec $(top_srcdir)/clean-Makefile {} \;
Это решение позволяет обойти проблемные вопросы, которые вытекают из AM_MAINTAINER_MODE
, потому что метафайлов не требуется изменять.
Мне кажется, что одним из самых больших недостатков autoconf является неправильное восприятие того, что каждый построенный с его помощью проект имеет зависимость от autoconf (это не ошибка автоконфигурации, а неудача маркетинга/образования), и это неправильное восприятие в основном результат tarballs, содержащих метафайлы.
Вопрос: Есть ли лучший способ достичь желаемой цели создания tarball, который не содержит метафайлов автозапуска? (Вопрос о том, является ли эта цель просто «возможно нежелательной» или «действительно злой», слишком открыта для этого форума!)
Я думаю, что это не идея goot. Когда я загружаю исходный tarball, я хочу ВСЕ источники, включая полную систему сборки. – Rudi
@ Rudi. Вы получаете полную систему сборки! Метафайлы автотюлина не являются частью системы сборки; они просто используются для создания системы сборки. –
@WilliamPursell: Я понимаю, почему вы хотите это сделать. Для большинства пользователей пакета было бы (несколько) проще, если бы эти файлы отсутствовали. Но поскольку autotools являются продуктом GNU, предназначенным для облегчения распространения GPL, включая соответствие их собственной лицензии («соответствующий источник» в GPL3). Если кто-то хочет «изменить работу», добавив единицы перевода и другие вещи, им понадобится configure.ac и Makefile.am. – ldav1s