Недавно я залил на Hackage свой первый пакет. Тот самый, с параллельной реализацией генетического алгоритма . В действительности, пакеты на Hackage заливаются очень просто. Но все же я хотел бы сделать небольшую напоминалку касательно того, что нужно сделать перед тем, как выкладывать свой пакет.
Важно присваивать пакетам правильные версии. В мире Haskell принято использовать схему, похожую на semver , но не совсем semver. Подробности можно найти на Haskell Wiki .
В .cabal файле можно указать адрес репозитория с исходным кодом пакета:
type: git
location: https://github.com/afiskon/simple-genetic-algorithm
Перед тем, как заливать пакет, нужно проверить, что он правильно (в том числе безо всяких там опечаток) документирован, сказав cabal haddock
. Документация, понятное дело, должна быть на английском. Также нужно сказать cabal check
и по возможности исправить выведенные предупреждения. Очень важно проверить работу пакета с несколькими версиями GHC. Например, если сейчас вы пользуетесь GHC 7.6, неплохо бы проверить, что пакет успешно собирается GHC 7.4 и GHC 7.8 (последний сейчас еще готовится к релизу).
Чтобы что-нибудь залить на Hackage, нужно там зарегистрироваться . Собираем пакет командой cabal sdist
. Берем получившийся файл tar.gz и заливаем пакет-кандидат . Это такая возможность посмотреть, как пакет будет выглядеть на Hackage. Как бы заливка понарошку. Затем нужно написать на электропочту admin@hackage.haskell.org с просьбой дать права на загрузку настоящих пакетов. В письме не будет лишним указать ссылки на свой профиль на Hackage и уже залитый пакет-кандидат. В зависимости от дня недели и времени суток ответ может прийти в течение пары часов или пары дней.
Получив права, заливаем пакет. Готово, теперь его можно устанавливать через cabal ! Генерация Haddock происходит не моментально. Сейчас документация появляется в течение нескольких минут, максимум — получаса. Если документация к вашему пакету не появляется в течение длительного времени, возможно, имеет место какой-то косяк. Убедитесь, что cabal haddock
отрабатывает нормально и что cabal check
ни на что не ругается.
После публикации нового пакета или обновления существующего обязательно сделайте анонс в /r/haskell или haskell-cafe@ . В первом можно просто кинуть ссылку, во втором придется написать немного сопроводительного текста на английском языке . Во-первых, своим анонсом вы дадите людям знать о существовании вашего пакета, что увеличит шансы на получение багрепортов и пулреквесов. Во-вторых, хаскелисты просто обожают докапываться до чужого кода, так что вы с большой вероятностью получите массу идей по улучшению своего пакета 🙂
Если вам есть, чем дополнить эту напоминалку, не стесняйтесь пользоваться комментариями.