我有一個測試套件和一個基準測試套件,它使用GHC API將模塊編譯到Core,這樣我就不必編寫Core 'by hand'。在測試和基準套件中訪問GHC包數據庫
目前我主要使用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
沒有。這個問題的答案應該是這樣的,以便在任何一種情況下打印出適當的包數據庫的路徑。
感謝您的報告,我已經打開此問題:https://github.com/commercialhaskell/stack/issues/3462 – mgsloan
@mgsloan感謝您解決這個問題!儘管如此,我對可用於cabal-install的解決方案感興趣。看看ghc-mod的代碼,我想可能沒有真正的解決方案,但我認爲這種情況真的很煩人,應該有一些這樣的包(如'ghc-paths'),如果有的話生態系統中沒有標準。 –
@mgsloan那麼,最好的解決方法是什麼?我通過'stack'源代碼挖掘並研究瞭如何調用mkGhcPackagePath。好像我不得不暫停一個'EnvConfig'來調用'packageDatabaseLocal'等。最簡單的方法是什麼? –