Skip to content

Instantly share code, notes, and snippets.

@takahashim
Last active October 22, 2019 08:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takahashim/d1327386abe4f37ecfc5179c9134562e to your computer and use it in GitHub Desktop.
Save takahashim/d1327386abe4f37ecfc5179c9134562e to your computer and use it in GitHub Desktop.

mruby master(2019-10-18)でのmrbgems動作テスト

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_XXXMRB_がついたときに死んだライブラリがそれなりにありそう
  • error: ‘MRB_TT_HAS_BASIC’ undeclared (first use in this function);でエラー (mruby-aws-s3, mruby-uv)
  • mruby-cfuncの依存が古くて死んだのもありそう
    • /mruby-cfunc/mrblib/cfunc_rb.rb:297: can't modify frozen String (FrozenError)
    • 現在開発が行われているブランチがmgemになっているのが問題なのでは?
  • mgem not found: mruby-glew みたいにコケているのもあった
@take-cheeze
Copy link

mruby-glewはこれだった気がしますね: https://github.com/IceDragon200/mruby-glew

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment