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