在cabal沙箱中重用Haskell Platform预构建的库?

时间:2014-02-12 21:00:28

标签: haskell sandbox cabal cabal-install

当我构建一个没有沙盒的Cabal项目时,Cabal使用我的Haskell平台安装中的现有库。但是,如果我尝试在Cabal沙箱中执行相同的操作,Cabal会强制将所有依赖项重建到沙箱中。

为了节省构建时间和磁盘空间,能够指示Cabal使用现有的Haskell Platform库而不是重建它们会很棒。这可能吗?

示例(files in a gist):

executable blog
  hs-source-dirs:    .
  main-is:           Test.hs
  build-depends:     base >= 4.5 && < 5
                   , text

如果我cabal build在包含此.cabal文件的目录中,我的Test模块将根据text的Haskell平台版本构建。

但是,如果我在沙盒中做同样的事情:

cabal clean # (or alternatively clone an empty gist)
cabal sandbox init
cabal build

我明白了:

$ cabal build
Package has never been configured. Configuring with default flags. If this
fails, please run configure manually.
Resolving dependencies...
Configuring install-test-0.1...
cabal: At least the following dependencies are missing:
text -any

如果我现在去cabal install,最新的text库将在我的沙盒下从头开始构建。

1 个答案:

答案 0 :(得分:0)

根据cabal-install bug #1695,目前不支持此功能。这可能最终会构建,有关详细信息,请参阅multi-instance packages

如果有人在阅读和关心,那么应该适用于某些用户的替代方案是在多个项目中共享一个cabal沙箱。这样,您仍然可以将Haskell Platform安装与开发期间所需的库安装分开。有关详情,请参阅An Introduction to Cabal sandboxes