2013-02-20 1 views
2

Я создаю дистрибутив модуля Perl 5, источник которого размещен на github. Я столкнулся с той же проблемой, что и пользователь Anirvan in this question: я бы хотел, чтобы github увидел файл README.md, но .tar.gz, чтобы включить такой же файл README. Ответ на этот вопрос, «использовать README.pod для обоих», работает в этом случае, но мне интересно, если я мог бы сделать свою оригинальную попытку работы:Как я могу динамически создавать файлы для дистрибутива Perl без манифеста или жалобы на make-файлы?

  • Я только README.md в хранилище, а не README.
  • Мой MANIFEST содержит README (так как это собирается в архив), но не README.md (так как это не так).
  • Мой MANIFEST.SKIP содержит README.md, так как я не хочу этого в tarball.
  • Мои Makefile.PL (*) имеет вход под PL_FILES на короткий скрипт, который копирует README.md в README файл

Это порождает README, но по пути:

  • t/manifest.t без make жалуется, что README в манифесте, но отсутствует
  • perl Makefile.PL также жалуется на README missing

Я неверно истолковал цель файла MANIFEST или этот тест? Можно ли как-то обозначить файл, который должен быть упакован, но еще нет? Я попытался изменить тест, но я мог найти способ для Test::CheckManifest игнорировать файлы, которые были там, но «не должно быть», а не игнорировать файлы, которых нет, но «должен».

(*) Да, я использую ExtUtils::MakeMaker, так как это то, что module-starter по умолчанию, и он работает до сих пор. Однако я не уверен, что другой инструмент изменится.

ответ

0

(Отвечая на мой собственный вопрос здесь): ExtUtils::MakeMaker, Module::Build и другие, в первую очередь установка методы. Вы должны игнорировать то, что make, Build, а другие жалуются при построении распределения. Это то, что касается make disttest.

В этом случае не размещайте код, чтобы помочь построить распределение в Makefile.PL. Вы должны разместить только код там, который должен быть запущен во время времени установки. Поэтому, если вы хотите, чтобы README.md стал README, вам необходимо было также распространять README.md. Это явно не то, что вы хотите (*).

Вместо этого взгляните на Dist::Zilla. Это явно система создания дистрибутива, а - не - система установки.

(*) Ответ на ваш вопрос может получить действительно странно ...: -/