の続き。ChefにRISC-Vのインストールする設定を記述していく。
基本的に、前回立ち上げたVagrantの環境(Vagrantfileがあるディレクトリ)の上に、RISC-VのChefの設定を置いていく。
$ knife solo init riscv-env
Vagrantfileの設定を変更する。参考にしたのは、
$ emacs Vagrantfile # Create a private network, which allows host-only access to the machine # using a specific IP. # 以下をアンコメントします config.vm.network :private_network, ip: "192.168.33.10"
$ vagrant up $ knife solo prepare vagrant@192.168.33.10 (途中でvagrantのパスワードを求められるので、"vagrant"と入力する) $ vagrant halt
- Recipe を作成する。
いよいよRecipe を作成する。
$ knife cookbook create riscv-env -o cookbooks $ emacs riscv-env/cookbooks/ricsv-env/recipes/default.rb
に書いてあることをChefで再現したい、という訳だ。
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf
上記は、Chefで以下のように記述する。
execute "update package index" do command "apt-get update" ignore_failure true action :nothing end.run_action(:run) log "done update" packages = %w{autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf} packages.each do |pkg| package pkg do action [:install, :upgrade] end end
riscv-toolsのクローンはChefのgit機能を使って以下のように記述した。
$ git clone https://github.com/riscv/riscv-tools.git $ cd $TOP/riscv-tools $ git submodule update --init --recursive
上記は以下のように記述する。
git "/home/vagrant/riscv-tools" do repository "https://github.com/riscv/riscv-tools.git" revision "master" enable_submodules true action :sync end
環境の構築。
bash "Set Environment of RISCV-tools" do code "sed -i 's/JOBS=16/JOBS=1/' /home/vagrant/riscv-tools/build.common" action :run end
build.sh を実行する前に、環境変数を設定しておかなければならないので、
ENV['TOP'] = "/home/vagrant/" ENV['RISCV'] = "/home/vagrant/riscv" ENV['PATH'] = "/home/vagrant/riscv/bin:#{ENV["PATH"]}" execute "Build RISCV-tools" do cwd "/home/vagrant/riscv-tools/" command "./build.sh" action :run end
これらをまとめてChefに記述しておき、vagrant up もしくは vagrant provision で起動する。
現在環境構築試行中。。。うまくいってるかな?