Ответ 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/
Итак, в основном необходимые артефакты сборки поставляются с архивом Hackage. Затем Cabal просто использует артефакты сборки во время процесса сборки, тем самым избегая необходимости начальной загрузки. Cabal также знает, как сохранить такие артефакты сборки, когда вы запускаете cabal sdist
для своих собственных пакетов, которые вы хотите не зависеть от счастливого или alex, но в последний раз, когда я проверял, это не хорошо взаимодействует с песочницами, fwiw.
Кстати, alex и счастливое развитие переместились в github: