0

作为 uni assignment,我需要使用某些功能增强给定的 Haskell 框架。由于该框架使用 Gloss 库,因此我使用cabal install 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 上工作。

4

2 回答 2

1

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

$ cabal sandbox init
$ cabal install LambdaWars

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

于 2016-10-21T12:58:32.540 回答
1

堆栈.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 -#}在文件顶部添加,删除第import Data.Label.Pure26 行中的内容。并将其他更改import Data.Label.Pure为以下内容

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

由于 glut 无法正常工作,我无法对此进行测试 - 但它使用 ghc-8.0.1 编译,我将在git repo提交拉取请求

要构建你需要运行的 lambdawars

> stack build
> stack exec -- LambdaWars

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

于 2016-10-21T16:29:49.350 回答