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

Posted by Makoto Kishimoto (Guest)
on 2011-07-19 07:20
(Received via mailing list)
Issue #5053 has been reported by Makoto Kishimoto.

----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
http://redmine.ruby-lang.org/issues/5053

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


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

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

衝突を検知するよりも、衝突しない方向に頑張る方が前向きな気がするんですよ。はずしてるかなぁ
Posted by KISHIMOTO, Makoto (Guest)
on 2011-07-19 14:04
(Received via mailing list)
$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
Posted by Usaku NAKAMURA (Guest)
on 2011-07-20 03:15
(Received via mailing list)
Issue #5053 has been updated by Usaku NAKAMURA.


パッチがこれでいいかどうかは確認してませんが、このチェックを入れることには
賛成します。
# 個人的には警告でなくエラーでいいと思う。

回避の努力自体はもうそれなりに入ってるので、それはそれ、これはこれ、
ということで。
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
http://redmine.ruby-lang.org/issues/5053

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


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


コンパイルした時刻のunix timeを埋め込んで、とかいうのも考えましたが、
そうするとちょっとオーバーキルかな、と思いました
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
http://redmine.ruby-lang.org/issues/5053

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


ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby 
コマンドと、ロードされる libruby 
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description 
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
Posted by Takahiro Kambe (Guest)
on 2011-07-20 07:06
(Received via mailing list)
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.
>
>
> $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
Posted by Makoto Kishimoto (Guest)
on 2011-07-20 08:42
(Received via mailing list)
Issue #5053 has been updated by Makoto Kishimoto.


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

ソースコードのとバイナリの同一性を重視するのであれば、指定したファイルの
ハッシュ値とかになるでしょうかね?
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
http://redmine.ruby-lang.org/issues/5053

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


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


同じソースでもコンパイルオプションを変えれば異なるバイナリが生成される可能性は十分ありますから、ソースの同一性だけでは判定できない気がします。
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053

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


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

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


----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-25155

Author: metanest (Makoto Kishimoto)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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

File No5053.pdf added

[ruby-dev:45708] コンペ向けの資料を添付
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-27393

Author: metanest (Makoto Kishimoto)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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


資料受け取りました。
(よく読んでませんが) これ、まつもとさんの認可が必要な内容なんですかね。
なかださんか誰かが勝手にやってしまえばいいレベルの話な気も。
まあ一応聞いてみます。
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-27640

Author: metanest (Makoto Kishimoto)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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


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

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

----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-27711

Author: metanest (Makoto Kishimoto)
Status: Assigned
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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

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 
のようなラッパーで実行しています。
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-28251

Author: metanest (Makoto Kishimoto)
Status: Feedback
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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

File 0001-revision-check.patch added

テスト用にconfigureオプションを消していたのを忘れてました。
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-28253

Author: metanest (Makoto Kishimoto)
Status: Feedback
Priority: Low
Assignee: tarui (Masaya Tarui)
Category: core
Target version: 2.0.0


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

Assignee changed from tarui (Masaya Tarui) to nobu (Nobuyoshi Nakada)

きしもとさん

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

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

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

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-28313

Author: metanest (Makoto Kishimoto)
Status: Feedback
Priority: Low
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0


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

Status changed from Feedback to Assigned

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

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-33325

Author: metanest (Makoto Kishimoto)
Status: Assigned
Priority: Low
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0


ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby 
コマンドと、ロードされる libruby 
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description 
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
Posted by Nobuyoshi Nakada (nobu)
on 2012-11-20 15:31
(Received via mailing list)
(12/11/20 23:18), mame (Yusuke Endoh) wrote:
> なかださん、いかがお過ごしでしょうか

いい具合でゴキゲンですが、[ruby-dev:45898]でも書いたように解決の方針がそもそも明後日ではないかと思います。
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-20 15:49
(Received via mailing list)
Issue #5053 has been updated by mame (Yusuke Endoh).

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>

----------------------------------------
Feature #5053: ruby コマンドと libruby の食い違いチェック
https://bugs.ruby-lang.org/issues/5053#change-33343

Author: metanest (Makoto Kishimoto)
Status: Rejected
Priority: Low
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 2.0.0


ビルドした ruby を、インストールせずに、ビルドディレクトリで ./ruby のように実行すると、実行する ruby 
コマンドと、ロードされる libruby 
でバージョンが食い違うことがありますが、その警告というのは(バイナリライブラリに互換性がないバージョンだったりしなければ)特に出たりしません
たまにはまることがあるので、main.c 中で RUBY_DESCRIPTION マクロと、グローバル変数 ruby_description 
で一致するかどうかを調べて、違うようならウォーニングを出す、というパッチです
(※基本的なアイディアはえぐちさんによるものです)
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.