Haskellスタックを使用してgithubからパッケージのバージョンをインストールすることは可能ですか?
例えば.cabal
またはstack.yaml
ファイル、依存関係をgit repo/branch/revisionでポイントするにはどうすればよいですか?
stack.yaml
packages
セクションのドキュメント は、より複雑なパッケージの場所を参照する例を示しています。
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にロードしないでください)。 )。
私の場合、正確なコミットを指定して、pandocのフォークに依存したいと思いました。以下をstack.yml
に追加することで機能しました:
extra-deps: - archive: https://github.com/italia/pandoc/archive/1327c564cccf5dfa387a2956443990d9854c85cd.Zip
これは、Gitのbranch-like URLで機能します。コミット時にファイルを参照し、[Zipのダウンロード]ボタンからURLをコピーすることにより、URLを見つけました。
私のブランチには特定のバージョンがあり、スタックがリゾルバーからフェッチできるどのバージョンよりも高いことに注意してください。 Cabalの依存関係でバージョンを特定します。そのブランチのバージョンがリゾルバーのインデックスで使用可能なバージョンと重複する場合、どちらが選択されるかわかりません