1

当我在没有沙箱的情况下构建 Cabal 项目时,Cabal 使用我的 Haskell 平台安装中的现有库。但是,如果我尝试在 Cabal 沙箱中做同样的事情,Cabal 会强制将我的所有依赖项重新构建到沙箱中。

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

示例(要点中的文件):

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

如果我cabal build在包含此.cabal文件的目录中,我的Test模块将针对 Haskell 平台版本的text.

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

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

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

4

1 回答 1

0

根据cabal-install bug #1695,目前不支持此功能。它最终可能会被构建,有关更多信息,请参阅多实例包

如果有人阅读和关心,那么对某些用户来说应该可行的替代方案是在多个项目之间共享一个 cabal 沙箱。这样,您仍然可以将 Haskell 平台安装与开发期间所需的库安装分开。有关Cabal 沙盒简介中的更多信息

于 2014-02-19T21:22:20.407 回答