Feature #5053
closedruby コマンドと libruby の食い違いチェック
Description
ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby コマンドと、ロードされる libruby でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
Files
Updated by Anonymous over 13 years ago
ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby コマンドと、ロードされる libruby でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
./configure --program-suffix=hogehoge とかしても librubyは上書きされて消えてしまうので、
以前すごくイライラした記憶があるんですけど、そもそもlibrubyにバージョン番号か、
program suffixをつけるべきな気がしてるんですよね。
衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ
Updated by Anonymous over 13 years ago
ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby コマンドと、ロードされる libruby でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
./configure --program-suffix=hogehoge とかしても librubyは上書きされて消えてしまうので、
以前すごくイライラした記憶があるんですけど、そもそもlibrubyにバージョン番号か、
program suffixをつけるべきな気がしてるんですよね。
衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ
Updated by metanest (Makoto Kishimoto) over 13 years ago
きしもとです
./configure --program-suffix=hogehoge とかしても librubyは上書きされて消えてしまうので、
以前すごくイライラした記憶があるんですけど、そもそもlibrubyにバージョン番号か、
program suffixをつけるべきな気がしてるんですよね。衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ
FreeBSD だと ruby18 と ruby19 という ports になってますが、1.8.?
では "libruby18.so" 、1.9.? では "libruby.so" という名前になるので
たまたま /usr/local/lib に共存できてたりしてます。
r23368 より前では、configure.in で RUBY_SO_NAME='$(RUBY_INSTALL_NAME)'
となっているので、program suffixが影響するわけですね。r23368 の変更は
[ruby-dev:38241] からの議論の結果によるもののようです。
Updated by metanest (Makoto Kishimoto) over 13 years ago
きしもとです
./configure --program-suffix=hogehoge とかしても librubyは上書きされて消えてしまうので、
以前すごくイライラした記憶があるんですけど、そもそもlibrubyにバージョン番号か、
program suffixをつけるべきな気がしてるんですよね。衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ
FreeBSD だと ruby18 と ruby19 という ports になってますが、1.8.?
では "libruby18.so" 、1.9.? では "libruby.so" という名前になるので
たまたま /usr/local/lib に共存できてたりしてます。
r23368 より前では、configure.in で RUBY_SO_NAME='$(RUBY_INSTALL_NAME)'
となっているので、program suffixが影響するわけですね。r23368 の変更は
[ruby-dev:38241] からの議論の結果によるもののようです。
Updated by usa (Usaku NAKAMURA) over 13 years ago
パッチがこれでいいかどうかは確認してませんが、このチェックを入れることには
賛成します。
個人的には警告でなくエラーでいいと思う。¶
回避の努力自体はもうそれなりに入ってるので、それはそれ、これはこれ、
ということで。
Updated by metanest (Makoto Kishimoto) over 13 years ago
コンパイルした時刻のunix timeを埋め込んで、とかいうのも考えましたが、
そうするとちょっとオーバーキルかな、と思いました
Updated by taca (Takahiro Kambe) over 13 years ago
In message redmine.journal-19373.20110720134723@ruby-lang.org
on Wed, 20 Jul 2011 13:47:24 +0900,
Makoto Kishimoto redmine@ruby-lang.org wrote:
Issue #5053 has been updated by Makoto Kishimoto.
コンパイルした時刻のunix timeを埋め込んで、とかいうのも考えましたが、
そうするとちょっとオーバーキルかな、と思いました
同じソースコードから作成される限り、コンパイルした日時に関わらず同じ
実行ファイルとなった方が嬉しいと思います。
--
神戸 隆博 (かんべ たかひろ) at 仕事場
Updated by taca (Takahiro Kambe) over 13 years ago
In message redmine.journal-19373.20110720134723@ruby-lang.org
on Wed, 20 Jul 2011 13:47:24 +0900,
Makoto Kishimoto redmine@ruby-lang.org wrote:
Issue #5053 has been updated by Makoto Kishimoto.
コンパイルした時刻のunix timeを埋め込んで、とかいうのも考えましたが、
そうするとちょっとオーバーキルかな、と思いました
同じソースコードから作成される限り、コンパイルした日時に関わらず同じ
実行ファイルとなった方が嬉しいと思います。
--
神戸 隆博 (かんべ たかひろ) at 仕事場
Updated by metanest (Makoto Kishimoto) over 13 years ago
同じソースでも違うバイナリになることも問題かと思いますが、一種の個体追跡
(CPUの個体IDのような)のようなことに使えるのも問題かなと思いました。
ソースコードのとバイナリの同一性を重視するのであれば、指定したファイルの
ハッシュ値とかになるでしょうかね?
Updated by mrkn (Kenta Murata) about 13 years ago
同じソースでもコンパイルオプションを変えれば異なるバイナリが生成される可能性は十分ありますから、ソースの同一性だけでは判定できない気がします。
Updated by mame (Yusuke Endoh) almost 13 years ago
- Status changed from Open to Assigned
- Assignee set to tarui (Masaya Tarui)
Updated by metanest (Makoto Kishimoto) over 12 years ago
- File No5053.pdf No5053.pdf added
[ruby-dev:45708] コンペ向けの資料を添付
Updated by mame (Yusuke Endoh) over 12 years ago
資料受け取りました。
(よく読んでませんが) これ、まつもとさんの認可が必要な内容なんですかね。
なかださんか誰かが勝手にやってしまえばいいレベルの話な気も。
まあ一応聞いてみます。
Updated by nobu (Nobuyoshi Nakada) over 12 years ago
正直なところ何が嬉しいのかさっぱりだったので放っておいたのですが…。
バージョンが一致しないlibrubyがロードされると嬉しくないのは同感なのですが、このチェックによって ./ruby が実行できなくなるとそのストレスは解消するものなんでしょうか。
Updated by nobu (Nobuyoshi Nakada) over 12 years ago
- File 0001-revision-check.patch added
- Status changed from Assigned to Feedback
ちょっと前(r36277)に、Makefileにrunnableというターゲットを追加しました。
今のところLinuxとMac OS Xしか対応していませんが、--enable-load-relativeを指定しておくと./bin/rubyでビルドしたバイナリが実行できるはずです。
こういったものではまずいでしょうか。
一応、RUBY_REVISIONとconfig.hのチェックサムで一致しない場合にエラーになるようにするパッチも作ったは作ったので、置いておきます。
ちなみに、私は https://github.com/nobu/build-files/blob/master/ruby.rb のようなラッパーで実行しています。
Updated by nobu (Nobuyoshi Nakada) over 12 years ago
- File deleted (
0001-revision-check.patch)
Updated by nobu (Nobuyoshi Nakada) over 12 years ago
テスト用にconfigureオプションを消していたのを忘れてました。
Updated by mame (Yusuke Endoh) over 12 years ago
- Assignee changed from tarui (Masaya Tarui) to nobu (Nobuyoshi Nakada)
きしもとさん
これはなかださんに一任となりました。
まつもとさんの意見は以下の 2 点です。
-
fail early の観点で、よい実装方法があるなら取り込みたい
-
ただし RUBY_DESCRIPTION を使うのはよい実装方法と思わない
--
Yusuke Endoh mame@tsg.ne.jp
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Feedback to Assigned
なかださん、いかがお過ごしでしょうか
--
Yusuke Endoh mame@tsg.ne.jp
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Assigned to Rejected
2012年11月20日 23:30 Nobuyoshi Nakada nobu@ruby-lang.org:
(12/11/20 23:18), mame (Yusuke Endoh) wrote:
なかださん、いかがお過ごしでしょうか
いい具合でゴキゲンですが、[ruby-dev:45898]でも書いたように解決の方針がそもそも明後日ではないかと思います。
一任されたなかださんがその意見なら、このチケットは rejected でよろしいかと思います。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by nobu (Nobuyoshi Nakada) over 12 years ago
(12/11/20 23:18), mame (Yusuke Endoh) wrote:
なかださん、いかがお過ごしでしょうか
いい具合でゴキゲンですが、[ruby-dev:45898]でも書いたように解決の方針がそもそも明後日ではないかと思います。
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦
Updated by naruse (Yui NARUSE) about 9 years ago
- Status changed from Rejected to Closed
Updated by naruse (Yui NARUSE) about 9 years ago
- Status changed from Closed to Rejected