GCCの評価とか、シミュレーションを回したりするのはUbuntuの上でやっているのだけれども、VMware Player上でUbuntuを再構築することが多く、何度もGCCの評価環境を構築し直すことがある。 だんだん面倒になってきたので、最近流行りのVagrantとChefを使って、自動的にMIPS用GCCをビルドして開発環境を構築できるようにしてみた。
基本的にVagrantfileとChefを使っているので、全部Githubに上げることができる。
Chefの環境を、site-cookbooksにsubmoduleとして組み込んでいる。
$ tree . . ├── Vagrantfile └── mips51-repo ├── cookbooks ├── data_bags ├── environments ├── nodes │ └── 192.168.33.10.json ├── roles └── site-cookbooks └── mips51-tools <-- ここから先はsubmodule ├── CHANGELOG.md ├── README.md ├── metadata.rb └── recipes └── default.rb
vagrant upで立ち上げることができる。vagrant ssh でログインすると、mipsel-linux-elf-gccが利用できるようになっている。
一番キモになるのは、mips51-toolsのdefault.rbに記述してあるレシピだ。
- http://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.gz
- http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.1.0/gcc-5.1.0.tar.gz
- ftp://sourceware.org/pub/newlib/newlib-2.2.0.20150423.tar.gz
をダウンロード & 解凍 & インストールを行うようになっている。
execute "build gcc-1" do cwd "#{gcc_build_dir}" command "../configure --target=mipsel-linux-elf --disable-nls --disable-libssp --with-gnu-ld --with-gnu-as --disable-shared --enable-languages=c && make && make install" action :run end
最初気がつかなかったのは、executeでインストールするときにcommandを1-lineで記述しなければならないこと複数行に渡ってcommandを記述していると最後の1行しか実行されなくて???だった。
さて、これだけではまだemacsとかも入っていないので、自動的にemacsやらinit.elやら.gitconfigなどをインストールできるようにしておきたい。 開発環境なので、ローカルに持っているベンチマークセットのリポジトリとかも自動的に展開できるようにしとかなければならないな。