10

happycontainsAttrGrammarParser.lyおよびcontainsのソースParser.lyツリー。それでも、私が知る限り、 をコンパイルするには、 ... を使用してファイルをファイルに変換する必要があり、コンパイルするには、...を使用してファイルをファイルに変換する必要があります。alexScan.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いますが、最後に、これがサンドボックスとうまく相互運用できないことを確認しました、fwiw.

ところで、alex and happy development は github に移動しました:

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

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

于 2015-02-04T03:04:22.443 に答える