斯塔克坚持打造Cabal包装

时间:2019-03-16 20:38:02

标签: haskell dependencies cabal haskell-stack

我正在使用Stack进行Haskell项目。 最近,我们开始使用lens软件包,该软件包需要Cabal软件包作为依赖项,但是我们切换到lens-simple,因为对于我们测试过在其上构建项目的一些较旧的机器,构建Cabal软件包的资源过于密集

但是,尽管事实上没有简单透镜或我们的任何其他软件包都依赖Cabal软件包,但Stack仍继续尝试构建它。

反正有办法让Stack停止它吗?它使大多数计算机上的构建过程非常漫长,而性能较弱的计算机上则无法进行构建。

项目依赖项列表:

HUnit 1.6.0.0
QuickCheck 2.12.6.1
ansi-terminal 0.8.2
array 0.5.3.0
base 4.12.0.0
binary 0.8.6.0
bytestring 0.10.8.2
call-stack 0.1.0
clock 0.7.2
colour 2.3.4
containers 0.6.0.1
deepseq 1.4.4.0
directory 1.3.3.0
erf 2.0.0.0
filepath 1.4.2.1
ghc-boot-th 8.6.3
ghc-prim 0.5.3
hspec 2.6.1
hspec-core 2.6.1
hspec-discover 2.6.1
hspec-expectations 0.8.2
integer-gmp 1.0.2.0
lens-family 1.2.3
lens-family-core 1.2.3
lens-family-th 0.5.0.2
lens-simple 0.1.0.9
mtl 2.2.2
ncurses 0.2.16
netflak 0.1.0.0
pretty 1.1.3.6
primitive 0.6.4.0
quickcheck-io 0.2.0
random 1.1
rts 1.0
setenv 0.1.1.3
stm 2.5.0.0
template-haskell 2.14.0.0
text 1.2.3.1
tf-random 0.5
time 1.8.0.2
transformers 0.5.5.0
unbounded-delays 0.1.1.0
unix 2.7.2.2

1 个答案:

答案 0 :(得分:4)

我的猜测是您的依赖项之一使用自定义安装节,其中Stack需要针对Setup.hs库构建Cabal文件,因此需要隐式依赖项。关于是否应该像我们今天那样提供Cabal库的最新版本,以及是否有迫使人们建立严重依赖关系的风险,与Stackage所采用的Cabal版本相比,Stackage已经进行了一些讨论。 GHC。

无论如何,您可以使用稍微复杂的方法来解决此问题,在该方法中,您将创建一个自定义快照,以删除Cabal库。看起来像这样:

# stack.yaml: point to the custom snapshot
resolver: snapshot.yaml

# snapshot.yaml: use the original snapshot and add a drop-packages
resolver: nightly-2019-03-17
name: drop-cabal
drop-packages:
- Cabal