2015年3月19日木曜日

MicroPythonをビルドしてみた

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$
あっさり動きました。

0 件のコメント: