在GHC 8.10.7/Cabal 3.10.1.0环境下生成含所有依赖的完整Hoogle数据库的问题求助
在GHC 8.10.7/Cabal 3.10.1.0环境下生成含所有依赖的完整Hoogle数据库的问题求助
大家好,我现在遇到了一个生成Hoogle数据库的棘手问题,我的环境配置是:
- GHC 8.10.7
- Cabal 3.10.1.0
- Haddock 2.24.2
我的项目是通过cabal.project管理的多项目结构,目标是生成包含项目自身代码+所有依赖库文档的完整Hoogle数据库,但试了好几种方法都没能达到预期,想请教大家有没有可行的解决思路。
我已经尝试过的方法及遇到的问题:
1. 常规Cabal Haddock命令
我执行了这条命令:
cabal haddock all --haddock-hoogle --haddock-html --keep-going --haddock-quickjump
之前我还修复了source-repository-package stanza里某个依赖的Haddock问题,才让这条命令能顺利跑完。但最终生成的Hoogle数据库只有项目自身的内容,所有依赖的文档都缺失了。
我看到有说法说当前Cabal的这个命令没法生成依赖的Hoogle数据库,但我有点困惑——毕竟我已经能让命令正常执行了,不确定是不是这个说法已经过时,还是我哪里理解错了?
2. 使用cabal haddock-project工具
我尝试跟着相关指南手动安装了更新版本的Haddock,但工具运行时检测到GHC版本不匹配,抛出了这个错误:
The GHC version is 8.10.7 but haddock is using GHC version 9.4.8
这个版本不兼容的问题直接卡住了,没法继续用这个工具。
3. 使用cabal-hoogle工具
这个工具操作起来很简单,我直接跟着文档步骤执行,成功生成了Hoogle数据库,但还是有大量依赖的文档缺失。不过相比前两种方法,这已经是目前效果最好的方案了。
了解到这个工具是直接调用Cabal和Hoogle的API实现的,所以我打算如果找不到更好的办法,就去深入研究它的源码看看问题出在哪。
我的问题:
- 大家看我试过的方法里有没有操作不当的地方?或者有没有其他我没尝试过的可行方案?
- 目前我的想法是去研究Cabal或者cabal-hoogle的源码来定位问题,但有没有更直接的方法可以尝试?
备注:内容来源于stack exchange,提问作者albertodvp
相关产品推荐
相关产品推荐

