#haskell #haskell-stack
#haskell #haskell-stack
Вопрос:
Я создаю проект на языке Haskell, используя stack
, и мне нужно обновить одну из библиотек, от которых зависит мой проект — назовем это otherlib
.
Я разветвил otherlib
и внес необходимые изменения, увеличил номер версии (назовем мою версию 0.9.1), создал ее с использованием cabal
(что и использует этот проект) и запустил cabal install otherlib
, чтобы поместить мою измененную версию в локальный кэш. Теперь я хотел бы включить ее в свой собственный проект как можно разумнее.
Изменения, которые я внес otherlib
, (IMO) довольно разумны и имеют шанс быть принятыми сопровождающим, как только я создам PR. Но в то же время у меня есть версия, которой нет в stack
наборе решений.
Включение otherlib-0.9.1
в мои package.yaml
зависимости не работает и не добавляет его к моим stack.yaml
. extra-deps
Есть ли хороший способ настроить это?
Ответ №1:
Вы можете указать репозитории Git (и его версию) в extra-deps
из stack.yaml.
Вот пример из документа:
extra-deps:
- git: git@github.com:yesodweb/wai
commit: 2f8a8e1b771829f4a8a77c0111352ce45a14c30f
subdirs:
- auto-update
- wai
Примечание subdirs
требуется только в том случае, если репозиторий содержит несколько пакетов (например, yesodweb).
Ответ №2:
В дополнение к правильному и точному ответу юджи-ямамото я обнаружил, что могу также создать символическую ссылку из otherlib
каталога непосредственно в базовый каталог моего собственного проекта и добавить его имя packages
во stack.yaml
вход . В частности, измененный раздел затем гласит:
packages:
- .
- otherlib-0.9.1
.. при этом также вызывается сам каталог otherlib-0.9.1
.
Это решение будет работать в тех случаях, когда otherlib еще недоступен где-либо за пределами локальной файловой системы.