我如何使用自定义插件“cabal安装”每个包装上的hackage

时间:2015-09-14 19:54:31

标签: haskell ghc cabal hackage

我正在处理自定义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时,我可以将它正在安装的软件包的名称传递给插件。由于已经安装了依赖项,因此我不必担心它们会以错误的名称安装。

1 个答案:

答案 0 :(得分:1)

我不确定第二部分,但第一部分应该可以通过命令行标志来实现:

cabal install --ghc-option=-fplugin=MyPlugin