Из-за несовместимых версий зависимостей Spock не будет собираться с GH C 8.8 и выше. Подобная проблема описана в выпуске Спока # 149 , хотя я не совсем уверен, что это точно такая же несовместимость. На это намекает ошибка, полученная от Stack, поскольку base-4.13.0.0
- это версия base , которая связана с GH C 8.8. Сбой cabal-install более неясным способом, потому что, заметив несовместимость, он пытается решить зависимости, используя более старые версии Spock , в итоге выбирая 0.9.0.1, пытаясь и, благодаря верхней границе отсутствующей версии, для зависимости reroute , при которой ее не удалось построить.
(Вскоре после публикации этого ответа отсутствующая верхняя граница была модифицирована до старой версии Spock , поэтому попытка воспроизвести проблему сейчас приведет к более легкому пониманию ошибки.)
Если отбросить учебник, самый простой способ использовать Спока, учитывая эти сложности, возможно, через cabal-install 3+ , Начните с использования ghcup для переключения на GH C 8.6.5:
$ ghcup install 8.6.5
$ ghcup set 8.6.5
Затем создайте пустой проект с помощью cabal-install:
$ mkdir myproject
$ cd myproject
$ cabal init
Add Spock в build-depends
раздел myproject.cabal
:
build-depends: base >=4.12 && <4.13
, Spock == 0.13.*
Наконец, вы можете запустить:
$ cabal build
, который установит Spock и его зависимости перед построением проекта. (Обратите внимание, что вам обычно не нужно использовать cabal install
для установки библиотек с помощью cabal-install 3.)
Предположительно возможно также заставить его работать со стеком, изменив на lts-14.27
resolver (последний, использующий GH C 8.6.5), отслеживающий все версии зависимостей, которые необходимо переопределить (как вы начали делать), и вручную добавив их в extra-deps
из stack.yaml
.