我有一个测试套件和一个基准套件,它们使用 GHC API 将模块编译为 Core,这样我就不必“手动”编写 Core 。
我现在主要使用stack
的是,我可以访问GHC_PACKAGE_PATH
测试套件中的环境变量 ( stack test
) 来查找可以提供给 GHC API 的包数据库。请注意,我并不关心任何特定的数据库,我只想拥有来自例如base
可用的模块,使用兼容版本的 GHC(例如GHC.Paths.ghc
)编译。
到目前为止一切正常,测试是绿色的。现在,如果我对基准套件 ( stack bench
) 执行相同操作,GHC_PACKAGE_PATH
似乎根本不存在。
长话短说,捕获程序构建时使用的 GHC 包数据库路径的可靠方法是什么?我想一些乱七八糟的事情Setup.hs
可能会让我到达我想去的地方。
编辑:这里有一些东西可以玩:https ://github.com/sgraf812/ghc-package-path
stack test
打印出 的值GHC_PACKAGE_PATH
,而stack bench
没有。这个问题的答案应该使得在任何一种情况下都可以打印出一些适当的包数据库的路径。