Вам необходимо добавить MissingH
к stack.yaml
.
extra-deps:
- 'MissingH-1.4.0.1'
В файле *.cabal
вашего пакета указано, какие версии зависимостей совместимы с вашим пакетом.Это слабая спецификация, не все комбинации на самом деле могут работать (потому что они могут иметь противоречивые границы для транзитивных зависимостей или есть непредвиденный сбой в конкретной версии, с которой вы не тестировали).
Напротив, stack.yaml
описывает конкретный снимок пакетов, закрепленных за конкретными версиями.Это точно говорит о том, что «мой пакет работает с этими версиями».Конечно, поддерживать версию каждой зависимости утомительно, и для этого команда Stackage поддерживает «распознаватель», курируемый набор версий пакетов, о которых известно, что они работают вместе, которые можно использовать для указания версии множества пакетов одновременно., установив resolver:
поле stack.yaml
соответственно.Средство распознавания перечисляет только подмножество пакетов в Hackage, поэтому, когда одна из ваших зависимостей отсутствует, вам необходимо добавить ее в stack.yaml
как extra-dep
.
Обновление: после обсуждения необходимы некоторые дополнительные сведения о настройке travis.
Во-первых, мое текущее предпочтительное решение для CI проектов на Haskell - не беспокоиться о стеке и использовать вместо него https://github.com/haskell-CI/haskell-ciкоторый генерирует сценарий travis с использованием cabal-install.
Теперь для менее радикального решения.
В настоящее время travis script только изменяет параметр --resolver
, но какнасколько я могу судить, нет опции командной строки для добавления extra-dep.Кажется, stack.yaml
файлы - единственный способ для этого.Кроме того, мы хотим указать MissingH
в качестве дополнительного депозита для последних ночных ночников, потому что LTS уже включают его.
Таким образом, я предлагаю следующее:
Создайте отдельный stack.yaml
только для ночного распознавателя, назовите его как-нибудь еще, поскольку у вас уже есть такой, например, stack-nightly.yaml
packages:
- .
extra-deps:
- 'MissingH-1.4.0.1'
Установите переменную окружения в точкудо stack-nightly.yaml
, если распознаватель работает по ночам, может быть:
env:
...
- $RESOLVER=nightly STACK_YAML=stack-nightly.yaml
# Not sure of the syntax.
В противном случае вы можете использовать параметр командной строки --stack-yaml
.