https://github.com/takahashim/check_mruby
- 2.1.0リリースが近いらしいので、公開されているmrbgemsの動作テストをしてみた
- ubuntu 18.04LTSで実行
- Dockerfileも作っているけれど、今のところはクラウドに直で実行
rake clean test
するだけ
mgem-listに登録されているmrbgemそれぞれに対し、testにgemを追加したbuild_config.rbを個別に用意して、実行する。
例(mruby-alarmの場合):
MRuby::Build.new do |conf|
if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
toolchain :visualcpp
else
toolchain :gcc
end
conf.gembox 'default'
end
MRuby::Build.new('test') do |conf|
if ENV['VisualStudioVersion'] || ENV['VSINSTALLDIR']
toolchain :visualcpp
else
toolchain :gcc
end
enable_debug
conf.enable_bintest
conf.enable_test
conf.gembox 'default'
conf.gem :git => "https://github.com/k0u5uk3/mruby-alarm.git"
end
各mrbgemsのビルド+テストログは以下の通り。
https://github.com/takahashim/check_mruby/tree/master/log/archives/20191018
- 現在成功している(
rake aborted
してない)のが160/307- そもそもubuntuで動かないものもある(クロスビルド専用ライブラリ等)
- ライブラリがインストールされていないので動かないものも多数
- 引数チェックの厳格化で死んでるのが多そう
- assertのセマンティクスの変更で
Warn: XXX => no assertion
が出てしまっている(要は正しくテストが実行されてない)のも多い(75件)
- 依存しているライブラリのインストールが面倒くさい
rake test
の途中でタイムアウトするやつが面倒くさい- 各テストにタイムアウトを設定するのをさぼっていたため
- Google Cloud Runで実行しようとしたところ、コンテナ環境(gVisor)がサポートしているsystem callの都合(?)で実行できない(?)
Container Sandbox Limitation: Unsupported syscall prctl(0x29,0x1,0x0,0x0,0x0,0x2a919dff5510). Please, refer to https://gvisor.dev/c/linux/amd64/prctl for more information.
Container Sandbox Limitation: Unsupported syscall copy_file_range(0x5,0x0,0x6,0x0,0x311a18,0x0). Please, refer to https://gvisor.dev/c/linux/amd64/copy_file_range for more information.
- ↑というエラーがログに出ていた
ARGS_XXX
にMRB_
がついたときに死んだライブラリがそれなりにありそうerror: ‘MRB_TT_HAS_BASIC’ undeclared (first use in this function);
でエラー (mruby-aws-s3, mruby-uv)- 2019/09/25のコミット https://github.com/mruby/mruby/commit/27e8ea4ea2aa2b3619d569a710f83b49a7dfc783 で変更されたもの
- mruby-cfuncの依存が古くて死んだのもありそう
/mruby-cfunc/mrblib/cfunc_rb.rb:297: can't modify frozen String (FrozenError)
- 現在開発が行われているブランチがmgemになっているのが問題なのでは?
mgem not found: mruby-glew
みたいにコケているのもあった
mruby-glewはこれだった気がしますね: https://github.com/IceDragon200/mruby-glew