我正在我的Mac(命令行可执行文件,而不是应用程序)上编写Haskell程序。我使用GitHub来托管git存储库和主页。我制作了<project>.cabal
和Setup.hs
文件,因为Cabal可以轻松构建,测试和生成文档。我也可能上传到Hackage,我不知道。发布一个Haskell程序在Homebrew上
当我标记1.0版本,我想打一个自制配方下载从GitHub的压缩包,并建立它。 我想唯一的依赖是GHC。
我会用runhaskell Setup
configure
/build
/install
(带前缀的/ usr /本地/库/ ...),而不是cabal
命令,以避免因阴谋安装。
这一切都很好,直到我开始使用Hackage的软件包,例如大火建设者和艾森。我应该如何管理这个?
我不想强迫非Haskellers不得不下载整个哈斯克尔平台。理想情况下,人们应该能够让自制软件在安装GHC之前安装GHC,然后如果他们愿意,可以在之后删除GHC。如果我让哈斯克尔平台的依赖性和第一安装我的Haskell的依赖关系,通过小集团安装或类似的,
- 的
~/.cabal/
文件夹的包将被抛在后面,即使后来他们
brew uninstall haskell-platform
- 我可能以及只能通过Hackage并使其成为人员,即将大部分范围限制为Haskellers。
我看到Cabal(-install)+ Hackage是一个有用的开发工具和Haskellers,但不适合这个。
我应该下载我使用的软件包的来源,它包括在我的源代码树,将它添加到构建命令呢?或者我应该使用--package-db
选项(找到here)?或者我的公式可以即时下载软件包的tar包并构建它?
我看了一下cabal2arch(Arch wiki,GitHub repo),但我不确定它是如何处理依赖关系的,或者它只是在做我不想做的事情。
发布一个二进制文件不是更容易,因此非Haskeleers不需要构建它。 Haskell Wiki上提到了一个打包器(http://www.haskell.org/haskellwiki/Mac_OS_X#Shipping_Installable_Haskell_Applications)。Haskeller可以使用cabal从源代码构建。 – Mark 2012-07-22 20:46:21
您提到的链接适用于应用程序包 - 我的程序是一个命令行工具。这会更容易,是的,但我真的很喜欢作为包管理器的自制软件,它喜欢从源代码构建所有东西(请参阅https://github.com/mxcl/homebrew/wiki中的“为什么要编译所有内容?”一节/常问问题)。你可以使用“瓶子”和自制软件,但这真的是需要几个小时才能建立的东西(比如Qt),而且你不能在任何地方托管二进制文件。 – mk12 2012-07-22 21:05:06
但大多数用户没有自制软件,用户可以更容易地下载编译程序的简单二进制文件,而不是软件包管理器。如果您必须使用管理器,请尝试使用macports并将您的代码作为端口,然后macports将集中构建它,并且用户下载预先编译的二进制文件。 – Mark 2012-07-22 21:12:38