14

我正在尝试使用 CircleCI 来构建一些 Haskell 项目。Circle/home/ubuntu/.cabal会在每次构建后自动缓存目录,我认为这会加快构建速度,但它们似乎需要和以前一样长的时间——跳过的只是下载步骤。

我正在使用的构建说明是

cabal update
cabal install --only-dependencies --enable-tests
cabal configure --enable-tests
cabal build
cabal test

我预计这install --only-dependencies一步会看到缓存并运行得更快。

可能出了什么问题?

4

1 回答 1

4

几个月前,Reddit 上就阴谋集团问题进行了精彩的讨论。我的回忆是 Haskell 没有指定的应用程序二进制接口,并且编译器在ghc编译期间做了很多积极的库间图缩减。因此,在 Haskell 应用程序中没有稳定库安装之类的东西——任何库都可能被拖下并针对全套已安装的库重新编译。

这里的底线是缓存.cabal/lib目录不会加快安装速度。总是会重新编译依赖项。除了使用 沙盒 之外,您最好的方法hsenv是在调用cabal install. 这样,可以提前计算依赖关系,并且编译应该只发生一次。

Haskell 大师,如果我在这里说的有误,请随时纠正我。我已经离开 Haskell 循环几个月了,而且我知道阴谋集团/图书馆问题最近受到了很多关注。

于 2013-02-05T16:35:12.223 回答