如何在基于容器的基础架构中构建GHC 7.10.2?

时间:2015-09-28 19:15:26

标签: haskell ghc travis-ci

我有一个需要GHC 7.10.2的项目,因此要使用Travis CI,我必须在预安装步骤中自行安装所需版本的GHC。

我目前正在使用

env:
 - CABALVER=1.22 GHCVER=7.10.2

before_install:
 - |
    travis_retry sudo add-apt-repository -y ppa:hvr/ghc
    travis_retry sudo apt-get update
    travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
    export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH

在我的.travis.yml;但由于我使用了sudo,因此仅限于使用“遗留”基础设施。

我想利用新的基于容器的基础架构,并尽可能地遵循migration docs,从而产生

sudo: false

env:
 - CABALVER=1.22 GHCVER=7.10.2

addons:
  apt:
    sources:
    - hvr-ghc
    packages:
    - cabal-install-$CABALVER
    - ghc-$GHCVER

before_install:
 - |
    export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH

因为在我看来应该相当于上述内容。但是这会继续使用GHC的默认(7.4)版本,这会导致构建失败。

如何在基于容器的基础架构中构建Haskell 7.10.2?具体来说,我应该在.travis.yml

中拥有什么

2 个答案:

答案 0 :(得分:1)

有关如何使用指南中的Stack执行此操作的说明,您可以在以下位置查看完整示例:

https://github.com/commercialhaskell/stack/blob/master/doc/GUIDE.md#travis-with-caching

答案 1 :(得分:1)

我怀疑您使用的是language: haskell。你可以试试language: c

我的理解是,travis目前还没有真正支持ghc-7.10.x(存在悬而未决的问题)。解决方法是手动绕过并安装它(使用hvr-ghc ppa);因此language: c而不是haskell。

另一个提示。首先删除env。我很确定它不适用于addons。只需使用ghc-7.10.2cabal-1.22即可。现在你的addons应该可以正常工作了。检查您的travis日志以确定。

我可以确认堆栈教程(由Michael Snoyman链接)非常好。但它应该有或没有堆栈。

这里有一个travis文件供我参考,我试着将sudo的使用量降到最低限度:

https://github.com/PierreR/language-puppet/blob/450ca249e23300351085d24fd58dcf9f429769d5/.travis.yml

如你所见,我仍然使用旧的travis infra,因为我需要带有C头的Ruby2.x。

这是一种相同的travis文件但不使用堆栈(堆栈仅对缓存有用):

https://github.com/bartavelle/language-puppet/blob/master/.travis.yml