Доступ к базе данных пакетов GHC в наборе тестов и тестов
У меня есть набор тестов и набор тестов, который использует 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
не делает. Ответ на этот вопрос должен сделать так, чтобы путь к некоторой подходящей базе данных пакета был распечатан в любом случае.
1 ответ
Правильное решение, как представляется, заключается в использовании пользовательских Setup.hs
чтобы сохранить withPackageDB
поле LocalBuildInfo
после configure
,
Повезло мне нашел cabal-toolkit
, из которых я изменил версию 0.0.3 для работы с Cabal 1.24 (и GHC 8.0.2), которую можно найти здесь до ее слияния.
Получение packageDBFlags
/ extraPkgConf
это просто вопрос вызова getGHCPackageFlags $(localBuildInfoQ)
,