web-dev-qa-db-ja.com

Stackを使用してローカルバージョンのパッケージをインストール/使用するにはどうすればよいですか?

状況は、Stackを使用してNetwireをインストールしようとしています。ただし、dhobbsによって報告されているように、最新のnetwire 5.0.1には問題があります。 http://hub.darcs.net/ertes/netwire/issue/1

問題がいつ修正されるかわからないので、リポジトリをダウンロードして自分で変更しました。しかし、そのようなローカルパッチバージョンをインストールする方法がわかりません。 stack installはそれを~/.stackにインストールしません。誰かアイデアがありますか?

更新

現在、Stackを使用して他のライブラリを開発しています。別のプロジェクトでそのライブラリを使用するにはどうすればよいですか?相対パスをハードコーディングすると、非常に見苦しくなります。

30
Carl Dong

したがって、ローカルにパッチを適用したNetwireバージョンを使用するプロジェクトがあり、プロジェクトには、例としてstack.ymlがあります。

flags: {}
packages:
- '.'
extra-deps: {}
resolver: lts-3.7

また、cabalファイルで宣言されているnetwireにも依存しています。

パッチを適用したNetwireをこのプロジェクトで使用するには、パッチを適用したNetwireパッケージをプロジェクトのサブディレクトリ(おそらくnetwire)に配置し、stack.ymlを次のように更新します。

flags: {}
packages:
- '.'
- netwire
extra-deps: {}
resolver: lts-3.7

これで、stack buildはパッチを適用したNetwireバージョンでプロジェクトをビルドします。

変更したソースをオンラインにして(ライセンスで許可されている場合)、tarball URLを使用してソースを参照することもできます。

- https://example.com/netwire.tar.gz

またはgitリポジトリとコミットリファレンス:

- location:
    git: [email protected]/netwire
    commit: 6a86ee32e5b869a877151f74064572225e1a0398

(詳細については、ドキュメントを確認してください: https://docs.haskellstack.org/en/stable/yaml_configuration/#packages-and-extra-deps

18
adamse