2013-02-05 213 views
14

我試圖使用CircleCI來構建一些Haskell項目。 Circle在每次構建之後會自動緩存/home/ubuntu/.cabal目錄,我認爲這會加快構建速度,但它們似乎只是以前一樣長 - 所有跳過的內容都是下載步驟。爲什麼cabal安裝已經重新安裝包中.cabal/lib

我使用的構建指令

cabal update 
cabal install --only-dependencies --enable-tests 
cabal configure --enable-tests 
cabal build 
cabal test 

,我預計install --only-dependencies步驟將看到緩存並更快地運行。

什麼可能會出錯?

回答

4

幾個月前有一個excellent Reddit discussion陰謀問題。我記得Haskell沒有指定的應用程序二進制接口,並且在編譯期間編譯器會進行大量的積極的庫間圖減少。因此,Haskell應用程序中沒有穩定的庫安裝 - 任何庫都可能被拖拽並重新編譯爲已安裝的全套庫。

這裏的底線是緩存.cabal/lib目錄不會加速安裝。重新編譯依賴關係總會發生。除了沙箱使用hsenv之外,最好的方法是在撥打cabal install時指定全套相關庫。這樣,依賴關係可以提前計算,編譯應該只發生一次。

哈斯克爾大師,請隨時糾正我,如果我在這裏說的是錯誤的。我已經走出Haskell循環幾個月了,我知道最近cabal/library問題已經受到了很多關注。

相關問題