web-dev-qa-db-ja.com

githubからのHaskell Stackインストールパッケージの依存関係

Haskellスタックを使用してgithubからパッケージのバージョンをインストールすることは可能ですか?

例えば.cabalまたはstack.yamlファイル、依存関係をgit repo/branch/revisionでポイントするにはどうすればよいですか?

28
Abraham P

stack.yamlpackagesセクションのドキュメント は、より複雑なパッケージの場所を参照する例を示しています。

packages:
- location: .
- location: dir1/dir2
- location: https://example.com/foo/bar/baz-0.0.2.tar.gz
- location: http://github.com/yesodweb/wai/archive/2f8a8e1b771829f4a8a77c0111352ce45a14c30f.Zip
- location:
    git: [email protected]:commercialhaskell/stack.git
    commit: 6a86ee32e5b869a877151f74064572225e1a0398
- location:
    hg: https://example.com/hg/repo
    commit: da39a3ee5e6b4b0d3255bfef95601890afd80709

次に、packageエントリにextra-dep: trueを追加し、stackがプルするコードを開発中のものとして扱わないようにします(たとえば、GHCiにロードしないでください)。 )。

24
R B

私の場合、正確なコミットを指定して、pandocのフォークに依存したいと思いました。以下をstack.ymlに追加することで機能しました:

extra-deps: - archive: https://github.com/italia/pandoc/archive/1327c564cccf5dfa387a2956443990d9854c85cd.Zip

これは、Gitのbranch-like URLで機能します。コミット時にファイルを参照し、[Zipのダウンロード]ボタンからURLをコピーすることにより、URLを見つけました。

私のブランチには特定のバージョンがあり、スタックがリゾルバーからフェッチできるどのバージョンよりも高いことに注意してください。 Cabalの依存関係でバージョンを特定します。そのブランチのバージョンがリゾルバーのインデックスで使用可能なバージョンと重複する場合、どちらが選択されるかわかりません

1
danza