我正在开发wxHaskell库,并且希望将我的开发工作与稳定的wxHaskell和黑客分开,我使用cabal-dev的方式如下:
cabal-dev add-source来添加每一个(wx、wxcore、wxdirect);cabal-dev install wx,我能够安装到沙箱本地包库中,就像预期的那样,检测到了依赖项,并构建和安装了所有东西。ghc -package-conf指定沙箱包数据库的位置,我成功地运行了测试代码。当我对wxHaskell源代码进行修改时,问题就出现了。为了构建和安装更新的代码,我必须使用cabal-dev install --reinstall,这是有意义的,因为我没有增加版本号;构建发生了,我看到“在.中安装库”。和“注册.”但是,我在代码中所做的更改并不存在于重新编译的沙箱库中。
我目前的工作是删除cabal-dev库,并在每次我想重建的时候重复这个过程。
发布于 2011-09-19 22:31:10
更新:阴谋安装>= 1.18支持沙箱,并将比未来的阴谋开发更好地维护。阴谋安装也有更好的支持使用附加源与沙箱。下面是对阴谋安装中新的沙箱特性的描述:http://coldwa.st/e/blog/2013-07-30-Cabal-sandbox.html
旧答案:
正如您所发现的,“添加源”并不意味着用于积极变化的项目。我也不确定是否有一个好的解决方案--很难跟踪添加源的项目的位置(至少没有现有的基础设施),而且我也不确定这总是正确的。
另一个工作流可能为您提供更好的服务--只需使用cabal-dev install,指向您希望用于未来开发的沙箱。最近版本的阴谋工具链(我指的是阴谋集团、阴谋安装和阴谋开发)允许这样做:
$ ls
wx wxcore wxdirect
$ cabal-dev install --sandbox=<path-to-some-sandbox> ./wx ./wxcore ./wxdirect
...(注意:我还没有用WX测试过这个--可能会出现我不知道的扭结!)
假设一切按预期进行,这将从本地子目录将三个包安装到指定的沙箱中。更新源只意味着为更改的项目重新发出一个cabal install命令。
请记住,您必须自己按正确的顺序发出重复的cabal安装命令,或者必须使用上面的批处理命令并相应地更新版本号。
我不认为这是理想的;但我认为这比每次删除沙箱要好。
发布于 2011-09-19 22:07:18
经过一些调查后,我可以证实,这是我对add-source用法的误解造成的,详见自述的“使用沙箱-本地黑客”部分( strong是由我自己添加的,并指出了我误解的原因):
Cabal还允许您使用未发布的包,就像它们正在与cabal-dev add-source一起进行黑客攻击一样。
例如,linux-ptrace和posix-waitpid包只是最近才上传到hackage。以前,cabal-dev用于构建依赖于这两个包的应用程序:
$ ls
linux-ptrace/ myProject/ posix-waitpid/
$ cd myProject
$ cabal-dev add-source ../linux-ptrace ../posix-waitpid
$ cabal-dev install注意,cabal-dev add-source接受一个源位置列表。
但是,请注意,因为已经添加的包不再绑定到原始源位置。上述示例中对linux-ptrace myProject 源的更改将不会被myProject使用,除非用户发出指向 linux-ptrace 源代码的路径的 cabal-dev add-source 。这类似于您现在可能执行的使项目能够使用对依赖项的更改的cabal install步骤。
https://stackoverflow.com/questions/7451296
复制相似问题