GHC APIを使用してモジュールをCoreにコンパイルするテストスイートとベンチマークスイートがあるので、Coreを「手動で」作成する必要はありません。
私は主stack
にこの時点で使用してGHC_PACKAGE_PATH
おり、テストスイート(stack test
)の環境変数にアクセスして、GHCAPIにフィードできるパッケージデータベースを見つけることができます。特定のデータベースを気にするほどではないことに注意してください。base
互換性のあるバージョンのGHC(eg GHC.Paths.ghc
)でコンパイルされた、egなどのモジュールが必要なだけです。
これまでのところすべてが正常に機能しており、テストはグリーンです。さて、ベンチマークスイート(stack bench
)に対して同じGHC_PACKAGE_PATH
ことをすると、まったく存在しないようです。
簡単に言えば、プログラムが構築されたGHCパッケージデータベースへのパスをキャプチャするための信頼できる方法は何ですか?いじり回すとSetup.hs
、自分がなりたい場所にたどり着くかもしれないと思います。
編集:ここで遊んでみてください:https://github.com/sgraf812/ghc-package-path
stack test
の値を出力しますがGHC_PACKAGE_PATH
、出力しstack bench
ません。この質問への回答は、いずれの場合も適切なパッケージデータベースへのパスが出力されるようにする必要があります。
適切な解決策は、カスタムSetup.hs
を使用しwithPackageDB
てLocalBuildInfo
afterのフィールドを永続化することであるように思われますconfigure
。
幸運なことにcabal-toolkit
、バージョン0.0.3を変更して、Cabal 1.24(およびGHC 8.0.2)でも動作するようにし、マージされるまでここで見つけました。
packageDBFlags
/を取得するにextraPkgConf
は、を呼び出すだけgetGHCPackageFlags $(localBuildInfoQ)
です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加