MakeCode for micro:bitをローカル環境で立ち上げる
micro:bitのソースを少しイジってみようと思い、pxt-microbitソースから環境を構築してみたのですが、思っていた以上に辛かったので書き留めました。
ラズパイにOSをインストール
こちらを参考に、RaspberryPi3にRaspbianをインストールします。
最新のRaspbianイメージ(2017-08-16-raspbian-stretch.img)では、途中のコンパイルでエラーになり回避できない(できなかった)ので、少し古いRaspbianイメージ(2017-07-05-raspbian-jessie.img)を使ってください。
初期設定は、WiFi接続とSSHを有効化、タイムゾーン、キーボードを変更しました。
キーボード … Japanese (PC-98xx Series)
pxt-microbitをソースから構築
こちらのgithub上のソースから構築した場合」を参考にしました。
前準備
pi@raspberrypi:~ $ sudo apt-get update pi@raspberrypi:~ $ sudo apt-get upgrade
Nodeをインストール
こちらにあるコマンドのとおり、Node.js 8をインストールします。
pi@raspberrypi:~ $ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - pi@raspberrypi:~ $ sudo apt-get install -y nodejs
インストール後のバージョンはこちら。
pi@raspberrypi:~ $ node -v > v8.4.0
yottaをインストール
こちらにあるコマンドのとおり、yottaをインストールします。
pi@raspberrypi:~ $ sudo apt-get update && sudo apt-get install python-setuptools cmake build-essential ninja-build python-dev libffi-dev libssl-dev && sudo easy_install pip pi@raspberrypi:~ $ sudo pip install yotta
インストール後のバージョンはこちら。
pi@raspberrypi:~ $ yotta --version > 0.18.2
toolchainをインストール
GNU ARM Embedded Toolchainをインストールします。
pi@raspberrypi:~ $ sudo apt-get install gcc-arm-none-eabi
インストール後のバージョンはこちら。
pi@raspberrypi:~ $ arm-none-eabi-gcc --version > arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)
最新のRaspbianイメージ(2017-08-16-raspbian-stretch.img)だと、arm-none-eabi-gcc (15:4.9.3+svn231177-1) 4.9.3 20150529 (prerelease)がインストールされるのですが、4.9.3だと後にコンパイルエラーが発生しました。少し古いRaspbianイメージ(2017-07-05-raspbian-jessie.img)だと、arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)がインストールされて、コンパイルエラーが発生しませんでした。
追加でパッケージをインストール
npm installで発生するエラーを回避するために、不足しているパッケージをインストールします。
Package gnome-keyring-1 was not foundの対策
pi@raspberrypi:~/pxt-microbit $ sudo apt-get install libgnome-keyring-dev
libusb.h: No such file or directoryの対策
pi@raspberrypi:~/pxt-microbit $ sudo apt-get install libusb-1.0-0-dev
/bin/sh: 1: srec_cat: not foundの対策
pi@raspberrypi:~/pxt-microbit $ sudo apt-get install srecord
pxt
あとはこちらの手順とおり。
pxt-microbitソースをcloneして、
pi@raspberrypi:~ $ git clone https://github.com/Microsoft/pxt-microbit pi@raspberrypi:~ $ cd pxt-microbit
PXT command line toolsをインストール。
pi@raspberrypi:~/pxt-microbit $ sudo npm install -g pxt
依存ファイルをインストール。
pi@raspberrypi:~/pxt-microbit $ npm install
hostnameのlocalhostをIPアドレスに書き換えてから、
pi@raspberrypi:~/pxt-microbit $ vi ~/pxt-microbit/node_modules/pxt-core/built/server.js
pxt-microbitを起動します。
pi@raspberrypi:~/pxt-microbit $ pxt serve
最後に
最新のRaspbianイメージで構築できなかったのは心残り。
stretchにarm-none-eabi-gcc 4.8を入れるとか、pxt-microbitをarm-none-eabi-gcc 4.9でビルドできるようにするとか。
上記手順をAzure仮想マシンでも確認したところ、pxt serveまでは正常に動くことが確認できた。現時点のやり方としては問題なさそう。(Azure仮想マシンの受信規則を変更しなかったので、ブラウザからpxtエディタが動作するところまでは確認していません。えへ。)