2015-05-04 51 views
3

我想指出我的全局cabal配置只能使用堆栈LTS。cabal sandbox with stackage

在这种情况下,cabal沙箱是否提供任何价值?

据我所知,应该没有地狱地狱了,因为所有的项目都会使用一套预先确定的套件,这些套件都是保证一起构建的。

有没有什么方法可以预先构建所有堆积LTS包来加速所有未来的项目构建?

回答

3

为什么选择沙箱?

我觉得还是有利于使用沙箱:

  • 不是每个包在stackage,如果你最终使用库或根据的东西是不是stackage的一部分,你都难保它将与你的其他软件包一起工作。

  • 沙箱有其他用途,只是防止阴谋地狱。他们的另一个主要用途是能够添加本地目录作为包的来源。例如,假设您已经检出了本地磁盘~/code/a~/code/b上的两个软件包,并且可以说b取决于a。如果您想检查b是否适用于您对a进行的某些更改,则可以将您当地的a结帐作为源文件添加到b的cabal沙箱中。如果您在构建前所有你的包,你可以使用以下方法来安装在cabal.config文件中列出的所有包设置

    cd ~/code/b 
    cabal sandbox add-source ~/code/a 
    cabal build 
    

预建LTS软件包

cat cabal.config | sed -rn 's/^.* ([^ ]+) ==.*/\1/gp' | xargs cabal install