[Ruby 1.9 - Feature #5053][Open] ruby コマンドと libruby の食い違いチェック

Issue #5053 has been reported by Makoto K…


Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: Makoto K.
Status: Open
Priority: Low
Assignee:
Category: core
Target version: 1.9.x

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby コマンドと、ロードされる
libruby でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

./configure --program-suffix=hogehoge とかしても librubyは上書きされて消えてしまうので、
以前すごくイライラした記憶があるんですけど、そもそもlibrubyにバージョン番号か、
program suffixをつけるべきな気がしてるんですよね。

衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ

$B$-$7$b$H$G$9(B

./configure --program-suffix=hogehoge $B$H$+$7$F$b(B
libruby$B$O>e=q$-$5$l$F>C$($F$7$^$&$N$G!"(B

$B0JA0$9$4$/%$%i%$%i$7$?5-21$,$"$k$s$G$9$1$I!"$=$b$=$b(Blibruby$B$K%P!<%8%g%sHV9f$+!"(B

program suffix$B$r$D$1$k$Y$-$J5$$,$7$F$k$s$G$9$h$M!#(B

$B>WFM$r8!CN$9$k$h$j$b!">WFM$7$J$$J}8~$K4hD%$kJ}$,A08~$-$J5$$,$9$k$s$G$9$h!#$O$:$7$F$k$+$J$!(B

FreeBSD $B$@$H(B ruby18 $B$H(B ruby19 $B$H$$$&(B ports
$B$K$J$C$F$^$9$,!"(B1.8.?
$B$G$O(B “libruby18.so” $B!"(B1.9.? $B$G$O(B “libruby.so”
$B$H$$$&L>A0$K$J$k$N$G(B
$B$?$^$?$^(B /usr/local/lib $B$K6&B8$G$-$F$?$j$7$F$^$9!#(B

r23368 $B$h$jA0$G$O!"(Bconfigure.in $B$G(B
RUBY_SO_NAME=’$(RUBY_INSTALL_NAME)’
$B$H$J$C$F$$$k$N$G!"(Bprogram suffix$B$,1F6A$9$k$o$1$G$9$M!#(Br23368
$B$NJQ99$O(B
[ruby-dev:38241] $B$+$i$N5DO@$N7k2L$K$h$k$b$N$N$h$&$G$9!#(B

Issue #5053 has been updated by Usaku NAKAMURA.

パッチがこれでいいかどうかは確認してませんが、このチェックを入れることには
賛成します。

個人的には警告でなくエラーでいいと思う。

回避の努力自体はもうそれなりに入ってるので、それはそれ、これはこれ、
ということで。

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: Makoto K.
Status: Open
Priority: Low
Assignee:
Category: core
Target version: 1.9.x

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

In message [email protected]
on Wed, 20 Jul 2011 13:47:24 +0900,
Makoto K. [email protected] wrote:

Issue #5053 has been updated by Makoto K…

$B%3%s%Q%$%k$7$?;~9o$N(Bunix time$B$rKd$a9~$s$G!“$H$+$$$&$N$b9M$($^$7$?$,!”(B
$B$=$&$9$k$H$A$g$C$H%*!<%P!<%-%k$+$J!“$H;W$$$^$7$?(B
$BF1$8%=!<%9%3!<%I$+$i:n@.$5$l$k8B$j!”%3%s%Q%$%k$7$?F|;~$K4X$o$i$:F1$8(B
$B<B9T%U%!%$%k$H$J$C$?J}$,4r$7$$$H;W$$$^$9!#(B

Issue #5053 has been updated by Makoto K…

コンパイルした時刻のunix timeを埋め込んで、とかいうのも考えましたが、
そうするとちょっとオーバーキルかな、と思いました

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: Makoto K.
Status: Open
Priority: Low
Assignee:
Category: core
Target version: 1.9.x

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by Makoto K…

同じソースでも違うバイナリになることも問題かと思いますが、一種の個体追跡
(CPUの個体IDのような)のようなことに使えるのも問題かなと思いました。

ソースコードのとバイナリの同一性を重視するのであれば、指定したファイルの
ハッシュ値とかになるでしょうかね?

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: Makoto K.
Status: Open
Priority: Low
Assignee:
Category: core
Target version: 1.9.x

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by mame (Yusuke E.).

Status changed from Open to Assigned
Assignee set to tarui (Masaya T.)


Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by Kenta M…

同じソースでもコンパイルオプションを変えれば異なるバイナリが生成される可能性は十分ありますから、ソースの同一性だけでは判定できない気がします。

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: Makoto K.
Status: Open
Priority: Low
Assignee:
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by metanest (Makoto K.).

File No5053.pdf added

[ruby-dev:45708] コンペ向けの資料を添付

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by nobu (Nobuyoshi N.).

正直なところ何が嬉しいのかさっぱりだったので放っておいたのですが…。

バージョンが一致しないlibrubyがロードされると嬉しくないのは同感なのですが、このチェックによって ./ruby
が実行できなくなるとそのストレスは解消するものなんでしょうか。


Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by mame (Yusuke E.).

資料受け取りました。
(よく読んでませんが) これ、まつもとさんの認可が必要な内容なんですかね。
なかださんか誰かが勝手にやってしまえばいいレベルの話な気も。
まあ一応聞いてみます。

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by nobu (Nobuyoshi N.).

File 0001-revision-check.patch added

テスト用にconfigureオプションを消していたのを忘れてました。

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Feedback
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by nobu (Nobuyoshi N.).

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のチェックサムで一致しない場合にエラーになるようにするパッチも作ったは作ったので、置いておきます。

ちなみに、私は build-files/ruby.rb at master · nobu/build-files · GitHub
のようなラッパーで実行しています。

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Feedback
Priority: Low
Assignee: tarui (Masaya T.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by mame (Yusuke E.).

Status changed from Feedback to Assigned

なかださん、いかがお過ごしでしょうか


Yusuke E. [email protected]

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Assigned
Priority: Low
Assignee: nobu (Nobuyoshi N.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

(12/11/20 23:18), mame (Yusuke E.) wrote:

なかださん、いかがお過ごしでしょうか

いい具合でゴキゲンですが、[ruby-dev:45898]でも書いたように解決の方針がそもそも明後日ではないかと思います。

Issue #5053 has been updated by mame (Yusuke E.).

Assignee changed from tarui (Masaya T.) to nobu (Nobuyoshi N.)

きしもとさん

これはなかださんに一任となりました。
まつもとさんの意見は以下の 2 点です。

  • fail early の観点で、よい実装方法があるなら取り込みたい

  • ただし RUBY_DESCRIPTION を使うのはよい実装方法と思わない


Yusuke E. [email protected]

Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Feedback
Priority: Low
Assignee: nobu (Nobuyoshi N.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)

Issue #5053 has been updated by mame (Yusuke E.).

Status changed from Assigned to Rejected

2012年11月20日 23:30 Nobuyoshi N. [email protected]:

(12/11/20 23:18), mame (Yusuke E.) wrote:

なかださん、いかがお過ごしでしょうか

いい具合でゴキゲンですが、[ruby-dev:45898]でも書いたように解決の方針がそもそも明後日ではないかと思います。

一任されたなかださんがその意見なら、このチケットは rejected でよろしいかと思います。


Yusuke E. [email protected]


Feature #5053: ruby コマンドと libruby の食い違いチェック

Author: metanest (Makoto K.)
Status: Rejected
Priority: Low
Assignee: nobu (Nobuyoshi N.)
Category: core
Target version: 2.0.0

ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby
コマンドと、ロードされる libruby
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)