stack sdist
をプロジェクトディレクトリに実行すると、stack.yaml
ファイルはtarballに含まれません(これはbe expectedと思われます)。スタックでインストールできるhackageパッケージを作成します
したがって、私がタールボールをhackageにアップロードすると、stack install mypackage
は、私がstack.yaml
ファイルで指定した欠落(extra-deps
)の欠落を訴えています。
$ stack install pandoc-placetable
Run from outside a project, using implicit global project config
Using resolver: lts-5.17 from implicit global project's config file: ~/.stack/global-project/stack.yaml
While constructing the BuildPlan the following exceptions were encountered:
-- Failure when adding dependencies:
spreadsheet: needed (>=0.1.3 && <0.1.4), not present in build plan (latest applicable is 0.1.3.4)
needed for package: pandoc-placetable-0.4
-- While attempting to add dependency,
Could not find package spreadsheet in known packages
Recommended action: try adding the following to your extra-deps in /Users/maurobieg/.stack/global-project/stack.yaml
- spreadsheet-0.1.3.4
それともさらにhackage依存関係を持っている場合-installable hackageパッケージstack
を作るために推奨される方法は何ですか?
更新:私はちょうど秘密結社ファイルにextra-source-files: stack.yaml
を追加し、stack.yaml
は確かに新しく発行されたバージョンのtarbalに含まれています。それにもかかわらず、stack install pandoc-placetable-0.4.1
はまだ同じエラーが発生します。
cabal-install
を自分のシステムにインストールしたくない人にGitHubからクローンを作成してから、stack
でビルドすることもできます。それは小さなパッケージのための推奨されたアプローチですか?または、pandoc-placetable
(つまりspreadsheet
)の依存関係をグローバルstack.yaml
に含めるように依頼する必要がありますか?グローバルファイルを汚染するような匂いがする...
あなたがリンクしたスレッドの提案( 'extra-source-files:stack.yaml')はありますか?私はそれが期待される。 Hackageパッケージは 'スタックインストール可能'ではありません(スタックは何もしませんが、すべての作業を行う他のプログラムを呼び出すので、 'スタックインストール可能'は単に 'cabal-installable'です)。あなたのリゾルバからの 'stack.yaml'(念のため、パッケージメンテナーは複数のコンパイルバージョンをサポートし、複数の' stack.yaml'を持つことに注意してください)。 – user2407038
上記のコメントに加えて、あなたのパッケージをStackageに入れることをお勧めします:https://github.com/fpco/stackage#add-your-package –
@ user2407038 'extra-source-files'は役に立たない、私の更新を見てください。 – mb21