Ссылки, сгенерированные autotools, должны быть заменены перед загрузкой? - PullRequest
0 голосов
/ 30 мая 2009

Мой главный вопрос заключается в том, что автоинструмент создает ссылки на INSTALL, COPYING, missing, install-sh и depcomp. Когда я попытался просмотреть их, я увидел, что они были загружены в виде ссылок, поэтому я заменил их реальными файлами, чтобы они были доступны для просмотра. Я что-то упустил? Когда я распаковываю свой файл gz из 'make dist', это выглядит так:

Дерево распространения (минус исходные каталоги)

-rw-r--r-- 1 ojblass users  18591 2009-05-30 03:23 Makefile.in
-rwxr-xr-x 1 ojblass users 136168 2009-05-30 03:20 configure
drwxr-xr-x 3 ojblass users   4096 2009-05-30 03:20 autom4te.cache
-rw-r--r-- 1 ojblass users  32230 2009-05-30 03:20 aclocal.m4
-rw-r--r-- 1 ojblass users    251 2009-05-30 03:20 configure.ac
-rw-r--r-- 1 ojblass users    626 2009-05-30 03:11 AUTHORS
-rwxr-xr-x 1 ojblass users    120 2009-05-30 03:11 autogen.sh
-rw-r--r-- 1 ojblass users    737 2009-05-30 03:11 ChangeLog
-rw-r--r-- 1 ojblass users  35147 2009-05-30 03:11 COPYING
-rwxr-xr-x 1 ojblass users  17867 2009-05-30 03:11 depcomp
-rwxr-xr-x 1 ojblass users    199 2009-05-30 03:11 example.pl
-rwxr-xr-x 1 ojblass users    152 2009-05-30 03:11 example.sh
-rw-r--r-- 1 ojblass users   9512 2009-05-30 03:11 INSTALL
-rwxr-xr-x 1 ojblass users  13620 2009-05-30 03:11 install-sh
-rw-r--r-- 1 ojblass users    215 2009-05-30 03:11 Makefile.am
-rwxr-xr-x 1 ojblass users  11135 2009-05-30 03:11 missing
-rw-r--r-- 1 ojblass users     75 2009-05-30 03:11 NEWS
-rwxr-xr-x 1 ojblass users    507 2009-05-30 03:11 profile.sh
-rw-r--r-- 1 ojblass users   2605 2009-05-30 03:11 README
-rw-r--r-- 1 ojblass users    201 2009-05-30 03:11 README_developers
-rwxr-xr-x 1 ojblass users    382 2009-05-30 03:11 run.sh
-rw-r--r-- 1 ojblass users    481 2009-05-30 03:11 TODO
-rwxr-xr-x 1 ojblass users    117 2009-05-30 03:11 usefull.sh

Я планирую удалить README_developers и сделать два раздела в README. Я также смотрю на удаление run.sh и profile.sh и включение их в цель теста make (требуется некоторое чтение). Я не думаю, что элемент TODO входит в исходный дистрибутив, но, возможно, это нормально, если он есть в исходном дереве проекта. Будем признательны за любые дополнительные указатели, помимо вопроса о ссылках.

Ответы [ 2 ]

1 голос
/ 04 июня 2009

Краткий ответ: Оставить эти символические ссылки (кроме INSTALL) будет поддельное соответствие стандартам кодирования GNU .

По умолчанию automake выполняет проверку на соответствие стандартам GNU (требуются следующие файлы: INSTALL, NEWS, README, КОПИРОВАНИЕ, АВТОРЫ и ChangeLog). Можно проверить эту проверку (и удалите некоторые из этих файлов), передав опцию --foreign automake (для этого отредактируйте autogen.sh и перезапустите его).

Ссылки были созданы, когда automake был вызван с помощью --add-missing параметры, которые, если не указан параметр --copy, создают символические ссылки для недостающие файлы, а не их копирование. Это для того, чтобы сохранить те файлы (на самом деле только УСТАНОВИТЬ) обновляются всякий раз, когда вы устанавливаете новые Automake. Относительно ответа Джонатана эти символические ссылки не проблема: все распределенные файлы копируются в отдельный каталог перед созданием tarball. Измените их на обычные файлы, если вы хотите их редактировать.

Другие файлы (README_developers, run.sh, profile.sh, TODO и т. д.), вероятно, были созданы используемой вами IDE и добавлены в EXTRA_DIST переменная в верхнем Makefile.am. Вы можете удалить их из распространение путем редактирования EXTRA_DIST, после чего вы также можете удалить их из источника.

Остальное автоматически генерируется autoconf и automake:

  • aclocal.m4
  • autom4te.cache
  • 1022 * Настройка *
  • depcomp
  • установка-ш
  • Makefile.in
  • отсутствует

Если вы хотите еще больше загромождать ваш верхний исходный каталог, вы можете добавить AC_CONFIG_AUX_DIR([scripts]) для настройки. Таким образом, некоторые из сценариев найдет место в каталоге scripts.

Обновление:

Стандарты кодирования GNU просто описывают требования тех файлы документации, которые будут присутствовать при распространении и что информация должна быть включена туда. Опция --add-missing Напомните программисту, какие файлы должны быть записаны. Очевидно, что пустой Файл NEWS или AUTHORS не сделает проект более совместимым со стандартом.

Только файл ChangeLog имеет жесткие требования к своему формату. В некоторых проектах ChangeLog автоматически генерируется из Форматированные сообщения коммита. На Darcs это просто darcs changes >ChangeLog. Если вы используете Subversion, вы можете посмотреть: svn2log , svn2cl .

Как уже упоминалось, файл INSTALL может быть целесообразно сохранить как символическую ссылку, но только если нет конкретной информации о проекте, необходимой для установки (т.е. никаких дополнительных аргументов скрипта configure и т. д.).

1 голос
/ 04 июня 2009

Файл TODO может идти в дистрибутиве; это указание потребителям на то, что, по вашему мнению, недостаточно в продукте, и они указывают на потенциальных участников в областях, где они могли бы помочь улучшить продукт. (Кроме того, если вы попадете под автобус, это поможет другим людям использовать материалы текущего выпуска.)

Возможно, стоит использовать подкаталог для хранения основной массы материалов конфигурации.

Относительно вашего основного вопроса - были ли файлы «ссылки» или «символические ссылки»? Символические ссылки менее полезны для упаковки, если только вы не скажете (GNU) tar следовать им («-h» или «--dereference»). Если единственные символические ссылки на эти файлы, это работает; если вы используете символические ссылки в самом дистрибутиве, это может привести к обратным результатам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...