Как рассказать CPAN (Perl) о пакетах, созданных с помощью метапрограммирования? - PullRequest
7 голосов
/ 30 ноября 2010

У меня есть несколько модулей CPAN, которые широко используют метапрограммирование, чтобы сократить расходы и упростить рефакторинг.

Следствием этого, однако, является то, что есть много пакетов, которые создаются программно,таким образом, в исходном коде никогда не будет строки package X::Y::Z;, которую CPAN может найти (а затем использовать для добавления пространства имен в список зарезервированных пространств имен в порядке поступления).

Поэтому мой вопрос: есть липредпочтительный способ сообщить CPAN об этих пакетах, созданных во время выполнения.Вот варианты, которые я сейчас рассматриваю:

  • Поиск всех пакетов вручную и создание фиктивного pm файла для CPAN для индексации.
  • Поиск вручную, а затем обновление сборки.PL, чтобы включить их в список provides.
  • Добавьте некоторый код в подпрограммы метапрограммирования, чтобы отслеживать, какие пакеты используются, и добавьте хук в build dist, чтобы обновить provides или какой-то другой раздел META.yaml

Последний вариант - это то, к чему я сейчас склоняюсь.Я хотел бы знать, есть ли какие-либо проблемы с этим подходом или какие-либо более эффективные способы обновления CPAN с помощью полного списка пакетов.

1 Ответ

4 голосов
/ 01 декабря 2010

Если я правильно читаю вас, это не проблема, если вы не забиваете другие пространства имен.Не требуется предварительных условий для объявления каждого созданного пространства имен, только базовое пространство имен вашего дистрибутива и файлы, связанные с дистрибутивом.Если вы хотите «зарезервировать» определенные пространства имен, вместо создания пустых файлов .pm, вместо этого посмотрите на создание файлов .pod и документа.

...