gpt4 book ai didi

haskell - 将 --reinstall 标志与 cabal-dev 一起使用

转载 作者:行者123 更新时间:2023-12-02 18:21:56 31 4
gpt4 key购买 nike

我正在开发 wxHaskell 库,并希望将我的开发工作与 hackage 中的稳定 wxHaskell 分开,我按以下方式使用 cabal-dev:

  1. 我从darcs获得了wxHaskell的源代码;
  2. 因为 wxHaskell 是 comprised of three components我使用 cabal-dev add-source 添加每一个 (wx, wxcore, wxdirect);<
  3. 然后,我可以通过执行 cabal-dev install wx 安装到沙箱本地软件包库中,正如预期的那样,检测到依赖项并构建并安装了所有内容。
  4. 最后,我使用 ghc -package-conf 指定沙盒包数据库的位置,成功运行了测试代码。

当我修改 wxHaskell 源代码时,问题就出现了。为了构建和安装更新的代码,我必须使用 cabal-dev install --reinstall ,这是有意义的,因为我不增加版本号;构建发生,我看到“正在安装库...”和“正在注册...”,但我在代码中所做的更改并不存在于重新编译的沙箱库中。

我目前的解决办法是删除 cabal-dev 库,并在每次想要重建时重复该过程。

最佳答案

更新: cabal-install >= 1.18 支持沙箱,并且今后将比 cabal-dev 得到更好的维护。 Cabal-install 还可以更好地支持将 add-source 与沙箱结合使用。以下是 cabal-install 中新沙箱功能的描述:http://coldwa.st/e/blog/2013-07-30-Cabal-sandbox.html

旧答案:

正如您所发现的,“add-source”不适用于主动更改的项目。我不确定那里是否有一个好的解决方案 - 很难跟踪添加源项目的位置(至少没有现有的基础设施),而且我不确定这总是正确的事情。

另一个工作流程可能会为您提供更好的服务 - 只需使用cabal-dev install,指向您希望用于 future 开发的沙箱。 Cabal 工具链的最新版本(我指的是 Cabal、cabal-install 和 cabal-dev)允许这种事情:

$ ls 
wx wxcore wxdirect
$ cabal-dev install --sandbox=<path-to-some-sandbox> ./wx ./wxcore ./wxdirect
...

(注意:我还没有使用 WX 对此进行测试 - 可能会出现我没有意识到的问题!)

假设一切按预期进行,这会将本地子目录中的三个软件包安装到指定的沙箱中。更新源仅意味着为更改的项目重新发出 cabal-dev 安装命令。

请记住,您必须自己以正确的顺序发出重复的 cabal-dev 安装命令,或者您必须使用上面的批处理命令更新相应的版本号。

我并不认为这是理想的;)但我认为这比每次删除沙箱都要好。

关于haskell - 将 --reinstall 标志与 cabal-dev 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7451296/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com