Я пытаюсь использовать превосходный AWS SDK amazonka в серверной части API, созданного с использованием столь же превосходной веб-инфраструктуры yesod , но мне очень трудно получить зависимости для этих двух библиотек для совместной работы.
Я начал проект скаффолда yesod с
stack new my-project yesod-mongo
, который заполнил мой файл кабала самой последней версией yesod (1.6.0). Наивное добавление зависимостей amazonka-core
и amazonka-ssm
(например) в мой файл cabal возвращается с
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for my-project-0.0.0:
amazonka-core must match -any, but the stack configuration has no specified version
(latest matching version is 1.5.0)
amazonka-ssm must match -any, but the stack configuration has no specified version
(latest matching version is 1.5.0)
needed since my-project is a build target.
Как было предложено, я попытался добавить amazonka-core-1.5.0
и amazonka-ssm-1.5.0
в мой файл stack.yaml в extra-deps
, но это не работает:
Warning: WARNING: /home/ubuntu/my-project/my-project.cabal was modified manually.
Ignoring package.yaml in favor of cabal file. If you want to use package.yaml
instead of the cabal file, then please delete the cabal file.
Error: While constructing the build plan, the following exceptions were encountered:
In the dependencies for amazonka-core-1.5.0:
conduit-1.3.0.2 from stack configuration does not match >=1.1 && <1.3 (latest
matching version is 1.2.13.1)
needed due to my-project-0.0.0 -> amazonka-core-1.5.0
После небольшой копки кажется, что снимок, из которого был создан шаблон yesod, это lts-11.6, но самый последний снимок, в который включена библиотека amazonka, это lts-10.9. Итак, я попытался построить проект снова из шаблона yesod-mongo, но на этот раз, указав более старый снимок:
ubuntu:~$ stack new my-project yesod-mongo --resolver lts-10.9
Downloading template "yesod-mongo" to create project "my-project" in my-project/ ...
Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- my-project/
Selected resolver: lts-10.9
Resolver 'lts-10.9' does not have all the packages to match your requirements.
classy-prelude version 1.3.1 found
- my-project requires ==1.4.*
classy-prelude-conduit version 1.3.1 found
- my-project requires ==1.4.*
classy-prelude-yesod version 1.3.1 found
- my-project requires ==1.4.*
http-conduit version 2.2.4 found
- my-project requires ==2.3.*
persistent version 2.7.1 found
- my-project requires ==2.8.*
persistent-mongoDB version 2.6.0 found
- my-project requires ==2.8.*
yesod version 1.4.5 found
- my-project requires ==1.6.*
yesod-auth version 1.4.21 found
- my-project requires ==1.6.*
yesod-core version 1.4.37.3 found
- my-project requires ==1.6.*
yesod-form version 1.4.16 found
- my-project requires ==1.6.*
yesod-static version 1.5.3.1 found
- my-project requires ==1.6.*
Using package flags:
- my-project: dev = False, library-only = False
Теперь я в растерянности и немного разочарован. Похоже, что шаблон игнорирует спецификацию снимка. Итак, мой вопрос:
Есть ли способ построить сайт в лесах из шаблона, который использует определенный снимок для заполнения файлов cabal и stack.yaml? Есть ли что-нибудь еще, что я могу сделать, чтобы заставить это работать?
Рад предоставить больше информации, если это будет полезно.
Редактировать: Я также попытался сократить версии пакетов в приведенном выше фрагменте, и хотя это решает проблему построения зависимостей, теперь сайт в скаффолдах не компилируется (предположительно, потому что все изменилось осмысленно от yesod-1.4.5 до yesod-1.6.0).