Залил свой первый пакет на Hackage

28 марта 2014

Недавно я залил на Hackage свой первый пакет. Тот самый, с параллельной реализацией генетического алгоритма. В действительности, пакеты на Hackage заливаются очень просто. Но все же я хотел бы сделать небольшую напоминалку касательно того, что нужно сделать перед тем, как выкладывать свой пакет.

Важно присваивать пакетам правильные версии. В мире Haskell принято использовать схему, похожую на semver, но не совсем semver. Подробности можно найти на Haskell Wiki.

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

source-repository head
    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@. В первом можно просто кинуть ссылку, во втором придется написать немного сопроводительного текста на английском языке. Во-первых, своим анонсом вы дадите людям знать о существовании вашего пакета, что увеличит шансы на получение багрепортов и пулреквесов. Во-вторых, хаскелисты просто обожают докапываться до чужого кода, так что вы с большой вероятностью получите массу идей по улучшению своего пакета :)

Если вам есть, чем дополнить эту напоминалку, не стесняйтесь пользоваться комментариями.

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.