Как установить / использовать локальную версию пакета, используя Stack?

Ситуация, я пытаюсь установить Netwire с помощью стека. Однако в последней версии netwire 5.0.1 есть проблема, о которой сообщает dhobbs: http://hub.darcs.net/ertes/netwire/issue/13

Поскольку я не знаю, когда проблема когда-либо будет устранена, я скачал репозиторий и внес изменения самостоятельно. Тем не менее, я не понимаю, как установить такую ​​локально исправленную версию. stack install не устанавливает это в ~/.stack, У кого-нибудь есть идея?

Обновить

Сейчас я занимаюсь разработкой некоторых других библиотек, используя Stack. Как заставить другой проект использовать эти библиотеки? Жесткое кодирование относительного пути выглядит невероятно уродливо.

1 ответ

Таким образом, у вас есть проект, в котором вы хотите использовать локально исправленную версию Netwire, и в вашем проекте у вас есть stack.yml, В качестве примера:

flags: {}
packages:
- '.'
extra-deps: {}
resolver: lts-3.7

У вас также есть зависимость от netwire объявлено в вашем файле клики.

Чтобы использовать пропатченный Netwire в этом своем проекте, вы просто помещаете пропатченный пакет Netwire в подкаталог вашего проекта, возможно, под названием netwireи обновите свой stack.yml в качестве таких:

flags: {}
packages:
- '.'
- netwire
extra-deps: {}
resolver: lts-3.7

Сейчас stack build создаст ваш проект с исправленной версией Netwire.

Вы также можете разместить измененный источник в сети (если лицензия позволяет) и ссылаться на источник, используя любой URL-адрес тарбола.

- https://example.com/netwire.tar.gz

или git-репозиторий и ссылка на коммит:

- location:
    git: git@example.com/netwire
    commit: 6a86ee32e5b869a877151f74064572225e1a0398

(Ознакомьтесь с документацией для получения дополнительной информации: https://docs.haskellstack.org/en/stable/yaml_configuration/)

Другие вопросы по тегам