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

时间:2015-02-04 02:55:34

标签: haskell bootstrapping happy alex

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

因此,为了编译这两种工具,似乎必须进行一些自举。

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

引导的方式和位置在哪里?

1 个答案:

答案 0 :(得分: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 sdist并且不想依赖happy或alex时,Cabal也知道如何保留这样的构建工件,但最后我检查了它与沙箱,fwiw没有很好的互操作性。< / p>

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

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

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