我正在我的 Mac 上用 Haskell 编写一个程序(命令行可执行文件,而不是应用程序)。我正在使用 GitHub 来托管 git 存储库和主页。我制作了<project>.cabal
andSetup.hs
文件,因为 Cabal 使构建、测试和生成文档变得容易。我也可能会上传到 Hackage,我不知道。
当我标记版本 1.0 时,我想制作一个 Homebrew 公式来从 GitHub 下载 tarball 并构建它。我希望唯一的依赖是 GHC。
我将使用runhaskell Setup
configure
/ build
/ install
(前缀为 /usr/local/Cellar/...)而不是cabal
避免依赖 cabal-install 的命令。
这一切都很好,直到我开始使用来自 Hackage 的包,例如 blaze-builder 和 aeson。我应该如何管理这个?
我不想强迫非 Haskell 用户下载整个 Haskell 平台。理想情况下,人们应该能够让 Homebrew 在构建我的程序之前安装 GHC,然后如果他们愿意,在之后删除 GHC。如果我将 Haskell 平台作为依赖项并首先通过 cabal-install 或类似方式安装我的 Haskell 依赖项,
- 包含包裹的
~/.cabal/
文件夹将被留下,即使之后它们
brew uninstall haskell-platform
- 我还不如只经历 Hackage 并让人们
cabal install
成为它,即,将大部分范围限制在 Haskellers 上。
我认为 Cabal(-install) + Hackage 对开发和 Haskellers 来说是一个有用的工具,但不适合这个。
我是否应该只下载我正在使用的软件包的源代码并将其包含在我的源代码树中,并将其添加到构建命令中?或者我应该使用该--package-db
选项(在此处找到)?或者我的公式可以即时下载软件包的压缩包并构建它吗?
我看了 cabal2arch 一点(Arch wiki,GitHub repo),但我不确定它如何处理依赖关系,或者它是否只是在做我不想做的事情。