我可以使用`cabal install`来使用多个核心吗?

有谁知道如何获得cabal install利用并行性? 我正在编译GHC,虽然我不知道GHC本身是否可以并行编译,但是cabal install可以同时运行多个编译,不是吗? 至less对于独立的,独立的软件包?

有谁知道这是可能的,以及如何做到这一点?

今年夏天有一个Google Summer of Code项目来并行cabal-install 。 虽然尚未合并到主线,但链接文章提供了抓取源代码并自行构build的说明。

我是正在编写这个夏季的代码项目的人。 补丁已经发送给邓肯,但他还没有审查。 请注意,我的代码在包粒度上工作,所以在构build单个包时不会加速。 我目前正在研究ghc --make一个并行包装ghc --make ,这将解决这个问题(我希望最终将它融入到主线cabal-install )。

更新(2012年2月) :邓肯已经审查了我的补丁,我需要纳入他的反馈意见并重新提交。 我希望在本月底之前完成这件事。

更新(2012年4月) :我已经更新了我的补丁以回应邓肯的评论。 新代码有点慢,但对Cabal库的更改要less得多。

更新(2012年6月) :Duncan Coutts 将并行分支合并到Cabal HEAD中 。 并行安装将在下一个cabal-install版本中提供。

更新(2012年10月)cabal-install 1.16.0 刚刚发布 。 这是包含我的并行补丁的第一个官方版本。

完成Mikhail Glushenkov的回答,logging下使用情况:

截至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