快乐和亚历克斯如何引导自己成为存在?

ram*_*ion 10 bootstrapping haskell alex happy

源树happy中包含AttrGrammarParser.lyParser.ly和源树alex包含Scan.x.然而,据我所知,为了编译happy,我们需要使用... 将.ly文件转换为.lhs文件happy,并且为了编译,alex我们需要使用... 将.x文件转换为.hs文件alex.

因此,为了编译任一工具,似乎必须进行一些自举.

Setup.lhs每个项目的文件都包含一些模板扩展,但据我所知,不要做任何特别的事情来进行自举.

引导如何以及在哪里完成?

kin*_*ini 10

我看到你在darcs.haskell.org上查看这些软件包的darcs存储库的源代码树.如果你看看Hackage上的实际tarball,你会看到一些不同的东西:

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 tarball一起提供.然后Cabal只在构建过程中使用构建工件,从而避免了本地引导的需要.Cabal还知道如何保存这样的构建工件,当你运行cabal sdist自己的程序包时,你不想依赖happy或alex,但最后我检查了这与沙盒,fwiw没有很好的互操作性.

顺便说一句,亚历克斯和快乐的发展已经转移到github:

https://github.com/simonmar/alex/

https://github.com/simonmar/happy/