6

Mac の Haskell でプログラムを作成しています (アプリではなくコマンドライン実行可能ファイル)。GitHub を使用して、git リポジトリとホームページをホストしています。私が<project>.cabalandSetup.hsファイルを作成したのは、Cabal を使用するとドキュメントのビルド、テスト、生成が簡単だからです。Hackage にもアップロードするかもしれませんが、わかりません。

バージョン 1.0 をタグ付けするときに、GitHub から tarball をダウンロードしてビルドする Homebrew 式を作成したいと考えています。唯一の依存関係を GHC にしたい

cabal-install に依存しないようにするため、コマンドではなく / runhaskell Setup configure/ build(プレフィックスは /usr/local/Cellar/…) を使用します。installcabal

Hackage のパッケージ (blaze-builder や aeson など) を使い始めるまでは、これで問題ありません。これをどのように管理すればよいですか?

Haskell プラットフォーム全体をダウンロードする必要がある非 Haskeller を強制したくありません。理想的には、Homebrew が私のプログラムをビルドする前に GHC をインストールできるようにし、必要に応じてその後に GHC を削除できるようにする必要があります。Haskell プラットフォームを依存関係にし、最初に cabal-install などを使用して Haskell 依存関係をインストールすると、

  1. パッケージを含むフォルダーは~/.cabal/、後でそれらがあったとしても、取り残されます
    brew uninstall haskell-platform
  2. 私は Hackage を使って人を作るだけcabal install、つまりほとんどの部分を Haskeller に限定することもできます。

Cabal(-install) + Hackage は、開発や Haskeller にとって便利なツールだと思いますが、これには適していません。

使用しているパッケージのソースをダウンロードしてソース ツリーに含め、ビルド コマンドにも追加する必要がありますか? または、--package-dbオプション (ここにあります) を使用する必要がありますか? または、私の数式でパッケージの tarball をオンザフライでダウンロードしてビルドすることもできますか?

cabal2arch ( Arch wikiGitHub repo ) を少し調べましたが、依存関係をどのように処理するのか、またはやりたくないことをしているだけなのかわかりません。

4

2 に答える 2

1

私の意見では、パッケージ マネージャーを使用する場合は、すべての依存関係をビルドできるか、他の方法ですぐに利用できるようにする必要があります。GHC とそのコア ライブラリ セットのみに依存している場合は、プラットフォーム全体を一緒にビルドする必要はありません。

ただし、ソースからビルドする場合 (すべてではありませんが、多くの場合、IMO は良い考えです)、すべての依存関係をビルドする必要があります。スーパーコンピューターに科学ソフトウェアを展開するために HPC 環境で使用するビルド システム [1] についても同じことを行います。しかし、それには代償が伴います。このようなシステムのブートストラップには、ツールチェーン全体と必要なすべてのライブラリが存在する必要があるため、かなりの時間がかかる場合があります。

実際、私たちが話しているように、私は GHC と haskell パッケージのビルド システムにサポートを入れています。はい、必要に応じて依存関係も取り込まれます。少なくとも、必要に応じて、ユーザーが自分のアカウントに Haskell のものをインストールできるように、cabal を展開できるようにします。

TL;DR 依存関係のサポートを追加します。

[1] http://hpcugent.github.com/easybuild

于 2013-02-07T09:24:57.727 に答える