Проблемы с построением зависимостей yesod / amazonka в проекте стека Haskell - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь использовать превосходный 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).

1 Ответ

0 голосов
/ 28 апреля 2018

К сожалению, вы не можете использовать Коммерческие шаблоны стека на Haskell с yesod и amazonka на данный момент. Причины:

Единственный способ заставить его работать - это вернуться к старой версии шаблонов стека (те шаблоны, которые фактически работали с преобразователем стека 10.9), а затем использовать их для создания нового проекта. К счастью, Stack поддерживает пользовательские шаблоны стеков:

$ stack new my-project https://raw.githubusercontent.com/github-user-id/stack-templates/master/my-template.hsfiles
...