Shogo Watanabe
Shogo Watanabe
## 良かった点 * 笹田さんに直接VMの話が聞けた * Rubyの内部に入り込む基礎知識が得られた * Rubyのコアに関してわからなければ質問できる、聞いていい、というマインドセットが得られた * 課題に取り組んでいたおかげで、コミッタの方々と具体的な話ができた * 実際に成果が出た ## 悪かった点 * 部屋の空気が若干こんもりしてた * gitterがごちゃごちゃしていた ## 改善案 * 余裕のある部屋を使う * 課題の提出はIssueにコメントする形だとgitterはもう少し落ち着くかも * 中間発表なんかあるとおもしろいかも? (時間の問題はありますが) * もっともっとVMの話を聞きたかった ##...
土日で続きをやってみました。 https://github.com/nownabe/ruby/commit/fafe53e43badaa55eff8541484359328627e8039 現在はまだいろいろ制限がありますが、`make testgem`で環境を汚さずにGemがテストできるようになりました。 Usage: ```bash $ mkdir build $ cd build $ ../ruby/configure --prefix=`pwd`/../install --enable-shared $ make -j # YAMLに定義されているGemすべてのテストを実行 $ make testgem # 特定のGemのテストを実行 $ make testgem GEMS=benchmark_driver...
`make testgem`を通すために必要な環境構築 # Debian 9 (Stretch) ```bash sudo apt-get install \ g++ \ ncurses-dev \ ragel \ libxml2-dev \ default-libmysqlclient-dev \ libpq-dev \ libsqlite3-dev \ libfcgi-dev ``` # CentOS 7...
# テスト状況 ## v2_4_2 / --enable-sharedなし * [ ] Debian 8 * [ ] Debian 9 * [ ] CentOS 6 * [ ] CentOS 7 * [ ] Ubuntu...
@hsbt ありがとうございます!ruby/rubyにPull Request投げる形でよろしいでしょうか? @ko1 それもそうですね。`test-gems`にします 🙌
macOSはEl CapitanからDYLD_LIBRARY_PATHやDYLD_INSERT_LIBRARIESが継承できなくなっているらしい。。。 http://paulbeachsblog.blogspot.jp/2016/03/dyldlibrarypath-and-el-capitan.html Mac対応は一旦保留 😞
@ko1 なるほど…!そういえばrunrubyでみました。確認してみます!:pray: Gem::Ext::Builderが実行するコマンドをなんらかのパッチで差し替える感じかな
https://gist.github.com/nownabe/5d50e0d988d1f6593b91efd0a28a9045 `--enable-shared`なしでうまくいかなかったときのログ: ``` ============================== Current Directory: /home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems/gems/stackprof-0.2.10/ext/stackprof ENV: {"GEM_HOME"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems", "GEM_PATH"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems", "LD_LIBRARY_PATH"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled", "PATH"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/bin:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems/bin:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no- enabled/bin:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems/bin:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled:/home/nownabe/.cargo/bin:/home/nownabe/tmp/sdk/appengi ne-java-sdk-1.9.51/bin:/home/nownabe/tmp/google-cloud-sdk/bin:/home/nownabe/bin:/home/nownabe/.anyenv/envs/rbenv/shims:/home/nownabe/.anyenv/envs/rbenv/bin:/home/nownabe/.anyenv/envs/pyenv/shims:/home/nownabe/ .anyenv/envs/pyenv/bin:/home/nownabe/.anyenv/envs/ndenv/bin:/home/nownabe/.anyenv/bin:/home/nownabe/.cargo/bin:/home/nownabe/tmp/sdk/appengine-java-sdk-1.9.51/bin:/home/nownabe/tmp/google-cloud-sdk/bin:/home/n ownabe/.sdkman/candidates/gradle/current/bin:/home/nownabe/bin:/home/nownabe/.anyenv/envs/rbenv/shims:/home/nownabe/.anyenv/envs/rbenv/bin:/home/nownabe/.anyenv/envs/pyenv/shims:/home/nownabe/.anyenv/envs/pyen v/bin:/home/nownabe/.anyenv/envs/ndenv/shims:/home/nownabe/.anyenv/envs/ndenv/bin:/home/nownabe/.anyenv/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin", "PWD"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/gems/gems/stackprof-0.2.10/ext/stackprof", "RUBY"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/bin/ruby", "RUBYLIB"=> "/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/lib:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled/.ext/common:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk- no-enabled/.ext/x86_64-linux:/home/nownabe/tmp/rubyhackchallenge/gemtest/ruby/lib:/home/nownabe/tmp/rubyhackchallenge/gemtest/build-trunk-no-enabled", "RUBYOPT"=>"-EUTF-8", "SHLVL"=>"1",...
``` $ ar x libruby-static.a $ ls addr2line.o compile.o dln_find.o enum.o hash.o loadpath.o numeric.o process.o regenc.o ruby.o strftime.o thread.o util.o vm_trace.o array.o complex.o dln.o error.o inits.o localeinit.o object.o proc.o regerror.o...
`--enable-shared`がないとeventmachineがビルドできない。 extconf.rbから生成されたMakefileのCPPFLAGSに`-DHAVE_RB_WAIT_FOR_SINGLE_FD -DHAVE_RB_THREAD_FD_SELECT`を追加するとビルドできる。 https://github.com/eventmachine/eventmachine/blob/master/ext/em.h#L25 https://github.com/eventmachine/eventmachine/blob/master/ext/em.cpp#L623 `--enable-shared`ありの場合のMakefileは`-DHAVE_RB_WAIT_FOR_SINGLE_FD -DHAVE_RB_THREAD_FD_SELECT`が定義されている。 このへんおっかける https://github.com/ruby/ruby/blob/trunk/lib/mkmf.rb#L1056 https://github.com/eventmachine/eventmachine/blob/master/ext/extconf.rb#L109