有谁知道如何让cabal install
利用并行性?我正在使用GHC进行编译,虽然我不知道GHC本身是否可以进行并行构建,但是cabal install
可以并行运行多个编译,不是吗?至少对于独特的独立包装?
有谁知道是否有可能以及如何做到这一点?
答案 0 :(得分:51)
我是那个正在编写Summer of Code项目的人。这些补丁已发送给Duncan,但他尚未对其进行审核。请注意,我的代码以包的粒度工作,因此在构建单个包时不会获得任何加速。我目前正在研究parallel wrapper around ghc --make
,它将解决这个问题(我希望最终将它合并到主线cabal-install
)。
更新(2012年2月):Duncan审核了我的补丁,我需要收集他的反馈并重新提交。我希望在本月底之前完成这项工作。
更新(2012年4月):我updated my patches回应了Duncan的评论。新代码有点慢,但对Cabal库的更改要少得多。
更新(2012年6月):Duncan Coutts just merged the parallel branch into Cabal HEAD。并行安装将在下一个cabal-install
版本中提供。
更新(2012年10月):cabal-install
1.16.0 has just been released。这是第一个包含我的并行补丁的正式版本。
答案 1 :(得分:34)
完成Mikhail Glushenkov的答案,记录一下使用情况:
从cabal 1.16.0开始,您现在可以使用
cabal install -j [pkgs…]
默认为每个核心一个作业。它还提供了更清晰的输出。
您可以使用以下内容进行默认的并行安装:
echo "jobs: $(getconf _NPROCESSORS_ONLN)" >> ~/.cabal/config
或(cabal-install 1.18 +):
echo 'jobs: $ncpus' >> ~/.cabal/config
获取最新的cabal-install:
cabal update
cabal install cabal-install --bindir ~/bin --upgrade-dependencies
答案 2 :(得分:17)
有一个Google Summer of Code project this summer并行cabal-install
。虽然它尚未合并到主线,但链接的文章提供了获取源代码并自行构建它的说明。