読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

誰得感溢れるGCC::Buildというモジュールを書いていますが心が折れそうです

自分が所属している研究室では, GCCやClangといったコンパイラのバグ調査や, MIPS/ARMのクロスコンパイラを使った諸々の研究をしているので, 結構GCCをビルドする機会があります.

GCCのビルドは, 慣れるまではかなーり面倒(参考資料: @さんのこの記事とか...)なので, それを自動化するGCC::Buildという俺得モジュールを, @さんのPerl::Buildを参考に作ろうとしています.

とりあえず, Binutils/GMP/MPC/MPFRをビルドする為のツールはできたのですが, 最後のGCCとnewlibをビルドする部分で停滞中.... 卒業するまでに完成させて, 後輩にプレゼントしたいものです.

@は是非pull requestをお願いします(丸投げの予感...!).



...っていうか, 一番最初にGCC::Buildという茨の道を進む必要はなかったのでは? という気がしますね.
まだビルドが楽なClangのビルドツール, Clang::Buildを作って, それからGCC::Buildを作れば良かったのでは...?

とりあえず, 次はClang::Buildを作ってみることとします!

追記: 「GCCやClangを頻繁にビルドする研究って, 何してるんだ?」

...という話題が, LingrのC++ Japanese Communityであったらしいので, 軽く説明させて頂きたいなーと思います.

ランダムテスト(ORANGE)

テストプログラムをランダムに生成してコンパイラのテストを行うランダムテストというツールを開発しています. 最近, ORANGEという愛称が付きました.

最近ようやくいい感じにバグを発見できるようになっていて, GCCやLLVMの開発チームにバグ報告を投げる事ができるようになっています.

開発チームに報告できるようなバグを見つけるなら, 常にGCC/LLVMを最新版にしておく必要がありますし, 報告したバグが修正された場合は, 修正が適用された最新版をビルドしてきちんと修正されたかを確認する必要があります.

...というわけで, 最近は結構な頻度でGCCやClangのビルドを繰り返しているようです.

受託・共同研究

先述のランダムテストに加え, 開発初期段階のCコンパイラ用テストスイートTestgen2の開発・管理などもしているので, 時折「HOGEのコンパイラのテストをお願いします!」という仕事や共同研究が来る事があります.

この場合も, ランダムテストの場合と同じく, バグ修正がある度にGCC/Clangをビルドし直して確認する必要があるので, 実際にそのような仕事が来たら, かなりのペースでビルドをする事になります.

...まあ, 最近はそういう案件は降ってきていないので, 割と平和ではありますが.

まとめ

誰得感溢れるGCC::Buildというモジュールを作っていたのですが, 心が折れたので一旦Clang::Buildに浮気することにします!

私達の研究室は, ランダムテストやTestgen2以外にも, いろいろな研究をしているので(しかも全てPerlで!!!), この辺りの話をまとめて, 「学術分野におけるPerlの活用例」みたいな感じで今年のYAPC::Asiaで発表したいなー... と思っています.