10

contains的源代码树和containshappy的源代码树。然而,据我所知,为了 compile ,我们需要使用 ...将文件转换为文件,并且为了编译,我们需要使用 ...将文件转换为文件。AttrGrammarParser.lyParser.lyalexScan.xhappy.ly.lhshappyalex.x.hsalex

因此,似乎这里必须进行一些引导才能编译任一工具。

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

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

4

1 回答 1

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。

对了,alex和happy development已经移到github了:

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

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

于 2015-02-04T03:04:22.443 回答