Как хэппи и Алекс самосовершенствуются?
дерево источника для happy
содержит AttrGrammarParser.ly
и Parser.ly
и дерево источника для alex
содержит Scan.x
. Тем не менее, насколько я могу судить, для компиляции happy
, нам нужно преобразовать .ly
файлы .lhs
файлы с помощью... happy
, и для того, чтобы скомпилировать alex
нужно преобразовать .x
файлы .hs
файлы с помощью... alex
.
поэтому кажется, что должна быть какая-то загрузка происходит здесь, чтобы скомпилировать любой инструмент.
на Setup.lhs
файлы для каждого проекта содержат некоторое расширение шаблона, но, насколько я могу судить, ничего не делают для загрузки.
как и где выполняется загрузка?
1 ответов
Я вижу, что вы смотрите на исходное дерево репозиториев darcs для этих пакетов на darcs.haskell.org - ... Если вы посмотрите на фактические tarballs на Hackage, вы увидите что-то немного другое:
https://hackage.haskell.org/package/alex-3.1.4/src/dist/build/alex/alex-tmp/
https://hackage.haskell.org/package/happy-1.19.5/src/dist/build/happy/happy-tmp/
таким образом, в основном необходимые артефакты сборки поставляется с архив здесь. Затем Cabal просто использует артефакты сборки во время процесса сборки, избегая необходимости локальной загрузки. Кабала также знает, как сохранить такие артефакты сборки при запуске cabal sdist
для ваших собственных пакетов, которые вы не хотите зависеть от happy или alex, но последний раз я проверил, что это не хорошо взаимодействует с песочницами, fwiw.
кстати, Алекс и happy development переехали в github: