当我构建一个没有沙盒的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
库将在我的沙盒下从头开始构建。
答案 0 :(得分:0)
根据cabal-install bug #1695,目前不支持此功能。这可能最终会构建,有关详细信息,请参阅multi-instance packages。
如果有人在阅读和关心,那么应该适用于某些用户的替代方案是在多个项目中共享一个cabal沙箱。这样,您仍然可以将Haskell Platform安装与开发期间所需的库安装分开。有关详情,请参阅An Introduction to Cabal sandboxes