如何构建一个沙盒阴谋集团项目,该项目具有不依赖于hackage的自定义版本(例如,从github结账)



如果有一个库在本地签出,该库使用应用程序使用的cabal构建。我想根据本地库构建我的应用程序,而不是从hackage中构建,但我不知道如何做到这一点。这似乎是我应该做的事情,我只是不知道该怎么做。

沙盒

如果它很重要或使事情复杂化,则应用程序位于cabal沙箱中,其中cabal-sandbox-config文件位于应用程序的路由目录中。

我正在努力实现的目标

我正在构建Yesod应用程序,我想调整其中一个依赖项(shakespeare)的行为。我想根据我的调整版本来构建我的应用程序。

使用专门为此用例设计的cabal sandbox add-source

示例:

$ git clone https://github.com/SomeUser/SomeDependency
$ cd /path/to/my-project
$ cabal sandbox add-source /path/to/SomeDependency
$ cabal build

另外,如果您稍后更新SomeDependency并尝试重建my-projectcabal会注意到这一点并重新安装SomeDependency

选项1:

您可以克隆项目,然后在克隆的目录中运行cabal安装。git clone https://github.com/yesodweb/shakespeare.git

这将为您提供一个目录shakespeare,其中将包含一个.cabal文件。

因此,只需输入目录并运行cabal install即可。这将安装shakespeare。现在继续安装您的项目。

关键点:

您需要首先自己安装shakespeare,这样当您编译自己的项目时,ghccabal就不会尝试单独安装shakespeare依赖项(默认情况下从hackage开始)。

选项2:

  • 安装黑客服务器
  • 上传莎士比亚的副本(你的调整版本)到你当地的黑客
  • 编辑你的cabal配置,将你的本地黑客攻击优先于haskell黑客攻击

远程回购:hackage.haskell.org:http://hackage.haskell.org/packages/archive

远程repo:local.hackage:http://local.hackage/packages/archive

如果你要调整几个软件包,这可能是有道理的,但你最好不要这样做,因为除其他外,跟踪调整后版本的更新将是一场噩梦。

最新更新