Stack坚持建造Cabal包

问题描述 投票:4回答:1

我正在使用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
haskell dependencies cabal haskell-stack
1个回答
4
投票

我的猜测是你的一个依赖项使用自定义设置节,其中Stack需要针对Setup.hs库构建Cabal文件,因此是隐式依赖项。我们已经对Stackage进行了一些讨论,关于我们是否应该像今天一样提供最新版本的Cabal库 - 并且有可能迫使人们建立一个沉重的依赖 - 而不是坚持使用随附的Cabal版本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
© www.soinside.com 2019 - 2024. All rights reserved.