如何在基于容器的基础架构中构建 GHC 7.10.2?
How do I build for GHC 7.10.2 in the container-based infrastructure?
我有一个项目需要 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
,所以只能使用 "legacy" 基础设施。
我想利用新的基于容器的基础架构,并尽可能遵循 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
应该有什么?
指南中解释了如何使用 Stack 执行此操作,您可以在以下位置查看完整示例:
https://github.com/commercialhaskell/stack/blob/master/doc/GUIDE.md#travis-with-caching
我怀疑您正在使用 language: haskell
。你能试试 language: c
.
我的理解是 travis 还没有真正支持 ghc-7.10.x
(有未解决的问题)。解决方法是绕过并手动安装(使用 hvr-ghc
ppa);因此 language: c
而不是 haskell.
另一个提示。首先删除 env
。我很确定它不会在您的 addons
中工作。只需使用 ghc-7.10.2
和 cabal-1.22
。现在您的addons
应该可以正常工作了。检查您的 travis 日志以确保。
我可以确认堆栈教程(Michael Snoyman 的link)非常好。但它应该可以使用或不使用堆栈。
这里有一个 travis 文件供参考,我在其中尝试将 sudo
的使用量降至最低限度:
https://github.com/PierreR/language-puppet/blob/450ca249e23300351085d24fd58dcf9f429769d5/.travis.yml
如你所见,我仍然使用旧的 travis infra,因为我需要 Ruby2.x 和 C header。
这是一个相同的 travis 文件,但没有使用堆栈(堆栈仅对缓存有用):
https://github.com/bartavelle/language-puppet/blob/master/.travis.yml
我有一个项目需要 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
,所以只能使用 "legacy" 基础设施。
我想利用新的基于容器的基础架构,并尽可能遵循 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
应该有什么?
指南中解释了如何使用 Stack 执行此操作,您可以在以下位置查看完整示例:
https://github.com/commercialhaskell/stack/blob/master/doc/GUIDE.md#travis-with-caching
我怀疑您正在使用 language: haskell
。你能试试 language: c
.
我的理解是 travis 还没有真正支持 ghc-7.10.x
(有未解决的问题)。解决方法是绕过并手动安装(使用 hvr-ghc
ppa);因此 language: c
而不是 haskell.
另一个提示。首先删除 env
。我很确定它不会在您的 addons
中工作。只需使用 ghc-7.10.2
和 cabal-1.22
。现在您的addons
应该可以正常工作了。检查您的 travis 日志以确保。
我可以确认堆栈教程(Michael Snoyman 的link)非常好。但它应该可以使用或不使用堆栈。
这里有一个 travis 文件供参考,我在其中尝试将 sudo
的使用量降至最低限度:
https://github.com/PierreR/language-puppet/blob/450ca249e23300351085d24fd58dcf9f429769d5/.travis.yml
如你所见,我仍然使用旧的 travis infra,因为我需要 Ruby2.x 和 C header。
这是一个相同的 travis 文件,但没有使用堆栈(堆栈仅对缓存有用):
https://github.com/bartavelle/language-puppet/blob/master/.travis.yml