堆棧通常會緩存程序包依賴關係構建,以節省將來構建中的時間,但我注意到實踐中發生這種情況的很多情況。當它工作時,它可以是一個巨大的節省時間,因爲建築物的依賴往往需要半小時或更長的時間。如何避免不必要的堆棧重建?
經過一番努力,我已經能夠隔離一個簡單的例子來說明這個問題,並想知道是否有人可以幫我修復它。注意,這個問題只涉及新的構建,就像在克隆之後......同一個克隆的第二個構建實際上很快。
如果我編譯使用這個stack.yaml
resolver: lts-2.15
packages:
- '.'
extra-deps:
- haskoin-0.1.0.2
- json-rpc-0.2.1.6
- pbkdf-1.1.1.1
- text-1.1.1.4
flags: {}
這.cabal文件
name: simple
version: 0.1.0.0
cabal-version: >=1.10
executable simple-exe
hs-source-dirs: src
main-is: Main.hs
build-depends: base
, haskoin
default-language: Haskell2010
堆棧將重建這個非常簡單的Main.hs
import Network.Haskoin.Internals
main = undefined
每次我重新克隆s時,每個依賴項都會被刪除我們的代碼。
我在猜測它可能與extra-deps
有關,特別是text-1.1.1.4
,但不確定。
相關:在Stack問題追蹤器中,關於緩存額外代碼的討論只是在https://github.com/commercialhaskell/stack/issues/1029。使用[自定義快照](https://github.com/commercialhaskell/stack/wiki/Custom-Snapshot)可能會有所幫助。 –