【发布时间】:2015-09-14 19:54:31
【问题描述】:
我正在开发一个自定义 ghc plugin。为了测试它,我想在 hackage 上的每个包上运行它。我遇到了两个困难。
首先,我需要在安装软件包时将-fplugin=MyPlugin 选项传递给ghc。我发现这样做的唯一方法是创建文件myghc.sh,其中包含:
#!/bin/sh
ghc -fplugin=MyPlugin $@
然后运行cabal install --with-compiler=./myghc.sh。但是当我运行该命令时,我得到了错误
Could not find module 'MyPlugin'
it is a member of the hidden package...
那么是否有一个特殊的标志我可以传递给cabal install 以使用我的插件而无需修改每个包的 cabal 文件?
其次,我希望我的插件记录有关它正在编译的包的信息,所以我需要一种方法让我的包知道这些信息。
看起来可能有很多方法可以做到这一点,但这是我迄今为止想出的。我想要一个已排序的 hackage 包列表,以便保证包的所有依赖项在列表中排在它之前?然后,当我运行cabal install 时,我可以将它正在安装的包的名称传递给插件。由于已经安装了依赖项,我不必担心它们会以错误的名称安装。
【问题讨论】: