2014-09-28 25 views
4

如果在本地檢出了與應用程序使用的cabal一起構建的庫。我想建立我的應用程序反對當地圖書館,而不是從哈克的東西,但我不知道如何做到這一點。這似乎是我應該能夠做的事情,我似乎無法解決問題。如何使用定製版本的不依賴於hackage的依賴關係構建沙盒cabal項目(例如,從github簽出的結果)

沙盒

如果它的事項或複雜的事情,該應用程序是與cabal-sandbox-config文件中的應用程序的路徑目錄中的陰謀沙箱。

我正在試圖完成

我建立耶索德應用程序,我想調整的依賴關係(莎士比亞)之一的行爲。我想建立我的應用程序對我的調整版本。

回答

9

使用cabal sandbox add-source,它是專門爲此用例而設計的。

例子:

$ git clone https://github.com/SomeUser/SomeDependency 
$ cd /path/to/my-project 
$ cabal sandbox add-source /path/to/SomeDependency 
$ cabal build 

作爲獎勵,如果您稍後更新SomeDependency,並試圖重建my-projectcabal會發現,並重新安裝SomeDependency

1

選項1:

你可以只克隆項目,然後運行一個小集團在克隆目錄中安裝。 git clone https://github.com/yesodweb/shakespeare.git

這會給你一個目錄shakespeare它將包含一個.cabal文件。

所以只需進入目錄並運行一個cabal install。這將安裝shakespeare。現在繼續安裝您的項目。

關鍵點:

首先,您需要自己安裝莎士比亞這樣,當您編譯自己的項目,ghccabal不嘗試(默認情況下從hackage)安裝莎士比亞依賴自身。

選項2:

  • 安裝hackage-server
  • 上傳莎士比亞(您扭捏版本)的副本到本地hackage
  • 編輯你的陰謀config來在haskell-當地hackage優先hackage

遠程回購:hackage.haskell.org:http://hackage.haskell.org/packages/archive

遠程回購:local.hackage:http://local.hackage/packages/archive

這可能是有意義的,如果你將要調整幾個包,但你可能最好不要這樣做,因爲除此之外,跟蹤你的調整版本的更新將成爲一場噩夢。

相關問題