MicroPythonをUbuntu上でビルドしてみました。
まあ、特に難しいところはなくビルドできちゃいました。
1.ソースを持ってきます
なんのことはなく、gitコマンドで持ってきます。
~$ mkdir micropython ~$ cd micropython/ ~/micropython$ git clone https://github.com/micropython/micropython Cloning into 'micropython'... remote: Counting objects: 26526, done. remote: Compressing objects: 100% (337/337), done. remote: Total 26526 (delta 163), reused 0 (delta 0), pack-reused 26185 Receiving objects: 100% (26526/26526), 17.01 MiB | 1.30 MiB/s, done. Resolving deltas: 100% (18856/18856), done. Checking connectivity...
2.ビルドします
unixディレクトリに移動して、makeするだけです。
~/micropython$ cd micropython/ ~/micropython/micropython$ cd unix ~/micropython/micropython/unix$ make : : modffi.c:32:17: fatal error: ffi.h: そのようなファイルやディレクトリはありません #include <ffi.h> ^ compilation terminated. make: *** [build/modffi.o] エラー 1 ~/micropython/micropython/unix$
一部ヘッダがないと怒られてしまいました。調べてみると、libff-devパッケージに含まれるヘッダファイルのようです。
パッケージを追加して続けます。
~/micropython/micropython/unix$ sudo apt-get install libffi-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: libffi-dev アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 9 個。 99.8 kB のアーカイブを取得する必要があります。 この操作後に追加で 323 kB のディスク容量が消費されます。 取得:1 http://jp.archive.ubuntu.com/ubuntu/ trusty/main libffi-dev amd64 3.1~rc1+r3.0.13-12 [99.8 kB] 99.8 kB を 0秒 で取得しました (199 kB/s) 以前に未選択のパッケージ libffi-dev:amd64 を選択しています。 (データベースを読み込んでいます ... 現在 386967 個のファイルとディレクトリがインストールされています。) Preparing to unpack .../libffi-dev_3.1~rc1+r3.0.13-12_amd64.deb ... Unpacking libffi-dev:amd64 (3.1~rc1+r3.0.13-12) ... Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Processing triggers for doc-base (0.10.5) ... Processing 1 added doc-base file... Registering documents with scrollkeeper... Processing triggers for install-info (5.2.0.dfsg.1-2) ... libffi-dev:amd64 (3.1~rc1+r3.0.13-12) を設定しています ... ~/micropython/micropython/unix$
気を取り直してmakeするとあっさり完了しました。
3.試しに動かしてみる
ドキュメント通りに動かしてみます。
~/micropython/micropython/unix$ ./micropython Micro Python v1.3.10-215-g005a7f4 on 2015-03-17; linux version >>> list(5 * x + y for x in range(10) for y in [4, 2, 1]) [4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46] >>> quit() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'quit' is not defined >>>
quit()では終了できず、Ctrl-Dで終了させます。
4.テストにかけてみる
これもドキュメント通りに。
~/micropython/micropython/unix$ make test Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity. cd ../tests && MICROPY_MICROPYTHON=../unix/micropython ./run-tests pass basics/0prelim.py pass basics/andor.py pass basics/array1.py : pass unix/ffi_callback.py pass unix/ffi_float.py 395 tests performed (15494 individual testcases) 395 tests passed ~/micropython/micropython/unix$
あっさり動きました。