Лучший способ включить разветвленную и неопубликованную версию библиотеки, опубликованной Hackage, в мой собственный проект - PullRequest
1 голос
/ 22 апреля 2019

Я строю проект на 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.

Есть ли хороший способ настроить это?

Ответы [ 2 ]

4 голосов
/ 22 апреля 2019

Вы можете указать репозитории Git (и его ревизию) в extra-deps stack.yaml.

Вот пример из документа :

extra-deps:
- git: git@github.com:yesodweb/wai
  commit: 2f8a8e1b771829f4a8a77c0111352ce45a14c30f
  subdirs:
  - auto-update
  - wai

Примечание subdirs требуется только в том случае, если хранилище содержит несколько пакетов (например, yesodweb).

0 голосов
/ 23 апреля 2019

В дополнение к правильному и точному ответу Юдзи-Ямамото, я обнаружил, что могу также сделать символическую ссылку из каталога otherlib непосредственно в базовый каталог моего собственного проекта и добавить его имя в packages в stack.yaml. В частности, измененный раздел тогда гласит:

packages:
- .
- otherlib-0.9.1

.. с самим каталогом, также называемым otherlib-0.9.1.

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

...