Haskell 斯塔克坚持建立阴谋集团

Haskell 斯塔克坚持建立阴谋集团,haskell,dependencies,cabal,haskell-stack,Haskell,Dependencies,Cabal,Haskell Stack,我正在使用Stack进行Haskell项目。 最近,我们开始使用需要Cabal包作为依赖项的包,但我们改用了Cabal包,因为构建Cabal包对于我们测试构建项目的一些旧机器来说太占用资源了 然而,尽管事实上,无论是lens simple还是我们的任何其他软件包都不依赖于Cabal软件包,Stack仍在继续尝试构建它 有没有办法让Stack阻止这一切?这使得构建过程在大多数机器上非常长,而在较弱的机器上则不可能 项目的依赖项列表: HUnit 1.6.0.0 QuickCheck 2.12.6.

我正在使用Stack进行Haskell项目。 最近,我们开始使用需要Cabal包作为依赖项的包,但我们改用了Cabal包,因为构建Cabal包对于我们测试构建项目的一些旧机器来说太占用资源了

然而,尽管事实上,无论是lens simple还是我们的任何其他软件包都不依赖于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

我的猜测是,您的一个依赖项使用自定义设置节,其中堆栈需要针对
Cabal
库构建
setup.hs
文件,因此隐式依赖项。我们已经就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

我认为
lens
没有
cabal
的依赖性。你为什么这么认为?@Sibi我想,因为镜头有一个自定义设置,请参阅.cabal的
自定义设置
小节。