Ад зависимости Хаскелла - PullRequest
       7

Ад зависимости Хаскелла

0 голосов
/ 02 сентября 2018

Я пытаюсь включить определенную версию библиотеки в проект на Haskell. Библиотека "bed-and-bread" (которая используется для операций martix), но мне нужна конкретная версия 0.4.3, которая исправила ошибку в реализации умножения.

Итак, мой stack.yaml выглядит так:

flags: {}
extra-package-dbs: []
packages:
- .
extra-deps:
- bed-and-breakfast-0.4
- base-4.6.0.1
resolver: lts-12.8

Но я получаю эту ошибку при сборке:

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for bed-and-breakfast-0.4:
    base-4.11.1.0 from stack configuration does not match >=4.5 && <4.7  (latest matching version
                  is 4.6.0.1)
needed due to realworldhaskell-0.1.0.0 -> bed-and-breakfast-0.4

Some different approaches to resolving this:


  * Set 'allow-newer: true' to ignore all version constraints and build anyway.

  * Consider trying 'stack solver', which uses the cabal-install solver to attempt to find some
    working build configuration. This can be convenient when dealing with many complicated
    constraint errors, but results may be unpredictable.

  * Recommended action: try adding the following to your extra-deps
    in C:\Users\info\Desktop\Projects\haskell\stack.yaml:

- base-4.6.0.1

Я выполнил рекомендованное действие, но оно ничего не решило. Я пытался использовать разные средства распознавания, чтобы увидеть, если это проблема с моей версией GHCi, но ничего не сработало. Как лучше всего интерпретировать подобные сообщения об ошибках и как мне действовать?

EDIT:

Если я удаляю -base.4.6.0.1 и добавляю allow-newer: true, я получаю это:

WARNING: Ignoring out of range dependency (allow-newer enabled): base-4.11.1.0. bed-and-breakfast requires: >=4.5 && <4.7
bed-and-breakfast-0.4: configure
Progress 1/2

--  While building custom Setup.hs for package bed-and-breakfast-0.4 using:
      C:\sr\setup-exe-cache\x86_64-windows\Cabal-simple_Z6RU0evB_2.2.0.1_ghc-8.4.3.exe --builddir=.stack-work\dist\7d103d30 configure --with-ghc=C:\Users\info\AppData\Local\Programs\stack\x86_64-windows\ghc-8.4.3\bin\ghc.EXE --with-g
hc-pkg=C:\Users\info\AppData\Local\Programs\stack\x86_64-windows\ghc-8.4.3\bin\ghc-pkg.EXE --user --package-db=clear --package-db=global --package-db=C:\sr\snapshots\76fd1958\pkgdb --package-db=C:\Users\info\Desktop\Projects\haskell\
.stack-work\install\8c390635\pkgdb --libdir=C:\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\lib --bindir=C:\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\bin --datadir=C:\Users\info\Desktop\Proj
ects\haskell\.stack-work\install\8c390635\share --libexecdir=C:\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\libexec --sysconfdir=C:\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\etc --docdir=C:
\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\doc\bed-and-breakfast-0.4 --htmldir=C:\Users\info\Desktop\Projects\haskell\.stack-work\install\8c390635\doc\bed-and-breakfast-0.4 --haddockdir=C:\Users\info\Desktop\Pr
ojects\haskell\.stack-work\install\8c390635\doc\bed-and-breakfast-0.4 --dependency=array=array-0.5.2.0 --dependency=base=base-4.11.1.0 --dependency=binary=binary-0.8.5.1 --dependency=deepseq=deepseq-1.4.3.0 --dependency=template-hask
ell=template-haskell-2.13.0.0 --extra-include-dirs=C:\Users\info\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\include --extra-lib-dirs=C:\Users\info\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\min

gw64\bin --extra-lib-dirs=C:\Users\info\AppData\Local\Programs\stack\x86_64-windows\msys2-20150512\mingw64\lib --exact-configuration
    Process exited with code: ExitFailure 1
    Logs have been written to: C:\Users\info\Desktop\Projects\haskell\.stack-work\logs\bed-and-breakfast-0.4.log

    Configuring bed-and-breakfast-0.4...
    Cabal-simple_Z6RU0evB_2.2.0.1_ghc-8.4.3.exe: The package has an impossible
    version range for a dependency on an internal library: bed-and-breakfast
    ==0.3.2. This version range does not include the current package, and must be
    removed as the current package's library will always be used.

РЕДАКТИРОВАТЬ 2:

Хорошо, так что я предполагаю, что библиотеке "кровать и завтрак" нужна база 4.11.1.0, которая включена в GHCi 6.10.2 (согласно https://wiki.haskell.org/Base_package), поэтому мне нужен распознаватель, который соответствует этой версии GHCi Где я могу узнать, какая это версия резольвера?

1 Ответ

0 голосов
/ 02 сентября 2018

Вот ограничение на последний доступный пакет bed-and-breakfast: base (>=4.5 && <4.7), что означает, что он, вероятно, даже не будет компилироваться с версией GHC выше 7.6. Учитывая, что до GHC 7.8 даже нет снимка LTS, вам не повезло с этим пакетом.

Другими словами, пакет устарел, и вы можете выбрать:

  • отправьте вопрос и надеюсь, что сопровождающий сделает что-то с этим
  • попробуй заставить его работать с более новым ghc самостоятельно
  • Используйте другой пакет
...