Доступ к базе данных пакетов 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),

Другие вопросы по тегам