我正在尝试使用CircleCI来构建一些Haskell项目.Circle /home/ubuntu/.cabal在每次构建后自动缓存目录,我认为这会加快构建速度,但它们似乎只需要很长时间 - 所有跳过的都是下载步骤.
我正在使用的构建指令是
cabal update
cabal install --only-dependencies --enable-tests
cabal configure --enable-tests
cabal build
cabal test
Run Code Online (Sandbox Code Playgroud)
我预计该install --only-dependencies步骤会看到缓存并运行得更快.
可能出了什么问题?
几个月前, Reddit上有一场关于阴谋集团问题的精彩讨论。我记得 Haskell 没有指定的应用程序二进制接口,并且ghc编译器在编译期间做了很多积极的库间图缩减。因此,Haskell 应用程序中不存在稳定的库安装——任何库都可能被拖下来并针对全套已安装的库进行重新编译。
这里的底线是缓存.cabal/lib目录对加速安装没有任何作用。依赖项的重新编译总是会发生。除了使用沙箱之外hsenv,最好的方法是在调用时指定完整的依赖库集cabal install。这样,可以提前计算依赖关系,并且编译应该只发生一次。
Haskell 大师们,如果我在这里所说的有任何错误,请随时纠正我。我已经脱离 Haskell 循环几个月了,我知道阴谋/库问题最近受到了很多关注。
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |