Haskell Gloss:缺少依赖项

时间:2016-10-21 12:28:51

标签: haskell dependencies ghc gloss

作为uni赋值,我需要使用某些功能增强给定的Haskell框架。由于此框架使用了Gloss库,因此我使用cabal install gloss安装了Gloss。这给了我没有错误,但是,当尝试配置框架的安装文件(runghc Setup configure)时,我收到以下错误消息:

Configuring lambda-wars-0.1.0.0...
Setup: Encountered missing dependencies:
gloss >=1.8 && <1.10, random ==1.0.*, time >=1.4 && <1.6

尝试安装这些依赖项(例如cabal install 'gloss >=1.8 && <1.10)会给我提供其他错误消息:

Resolving dependencies...
cabal: Could not resolve dependencies:
next goal: gloss (user goal)
rejecting: gloss-1.10.2.3/installed-3mE..., gloss-1.10.2.3, gloss-1.10.2.2,
gloss-1.10.2.1, gloss-1.10.1.1 (constraint from user target requires >=1.8 &&
<1.10)
trying: gloss-1.9.4.1
next goal: base (dependency of gloss-1.9.4.1)
rejecting: base-4.9.0.0/installed-4.9... (conflict: gloss => base==4.8.*)
rejecting: base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0,
base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0,
base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0,
base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0,
base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (constraint from non-upgradeable
package requires installed instance)
Dependency tree exhaustively searched.

经过一番研究,我认为这意味着我的GHC与项目所需的版本不同。但是,我似乎无法弄清楚如何真正解决这个问题!

我在Mac OS X 10.10.5版上工作。

2 个答案:

答案 0 :(得分:1)

我会首先尝试在Cabal沙箱中安装它:

$ cabal sandbox init
$ cabal install LambdaWars

但是在这里看起来你有一个base包的版本与它不兼容。您是否使用base-4.8尝试了较旧的GHC 7.8编译器?

答案 1 :(得分:1)

  

stack.yaml

resolver: lts-7.4 # for ghc 8.0.1
#resolver: lts-6.22 # for ghc 7.10.3
packages:
    - '.'

extra-deps:
- AC-Angle-1.0
- AC-Vector-Fancy-2.4.0


flags: {}

extra-package-dbs: []

此外,您需要修改src/Engines.hs

中的一小部分内容

在文件顶部添加{-# LANGUAGE CPP -#},删除第26行中的import Data.Label.Pure。将另一个import Data.Label.Pure更改为以下

#if MIN_VERSION_fclabels(2,0,0) 
import Data.Label 
#else 
import Data.Label.Pure 
#endif

我无法测试这个因为过剩而无法工作 - 但它用ghc-8.0.1编译,我会在pull request

提交git repo

建立你需要运行的lambdawars

> stack build
> stack exec -- LambdaWars

注意:在Linux上,您需要sudo apt-get install freeglut3-dev之类的东西才能运行它。