Стек настаивает на создании пакета Cabal - PullRequest
4 голосов
/ 16 марта 2019

Я работаю над проектом на Haskell, используя Stack. Недавно мы начали использовать пакет lens , для которого требуется пакет Cabal в качестве зависимости, но мы перешли на lens-simple , поскольку сборка пакета Cabal была слишком ресурсоемкой для некоторых старых машин, которые мы протестировали построение проекта на.

Однако, несмотря на то, что ни пакет с простым объективом, ни какой-либо из наших других пакетов не зависят от пакета Cabal, 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 Ответ

4 голосов
/ 17 марта 2019

Я предполагаю, что одна из ваших зависимостей использует пользовательский раздел настройки, где 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
...