Feature #4602
closednaming ruby dll (win32/64)
Description
=begin
同一ディレクトリへwin32版rubyとwin64版rubyをインストールしようとしてdll名が競合したので気付いたのですが、
MSWin版Rubyは、本体がDLLで、かつ、DLL名にconfigureで指定したprogram-suffixやprogram-prefixが反映されない
ため、同一ディレクトリへのインストールができません。
Windows版ではファイルは分離しているものの、exeとdllは不可分なので(dllへの分離は組み込み用の利便性と理解
しています)exe同様にdllに対してもconfigreで指定したprogram-suffixやprogram-prefixを反映させたほうが良い
と思います。
--- win32/Makefile.sub~ 2011-04-12 00:47:07.000000000 +0900
+++ win32/Makefile.sub 2011-04-24 03:12:39.000000000 +0900
@@ -129,7 +129,7 @@ ruby_version = $(MAJOR).$(MINOR).$(TEENY
!endif
!ifndef RUBY_SO_NAME
-RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)
+RUBY_SO_NAME = $(RT)-$(PROGRAM_PREFIX)$(RUBY_BASE_NAME)$(PROGRAM_SUFFIX)$(MAJOR)$(MINOR)$(TEENY)
!endif
!ifndef RUBY_PLATFORM
RUBY_PLATFORM = $(arch)
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
=begin
そんな地雷踏みに行かんでも、と思ったりはしますが...
えーと、他プラットフォームだと、たしかRUBY_SO_NAMEはprefixやsuffixによっては変えられなくて、transformは効く、とかでしたよね。
なんでそれで問題が起きないのかというと、異なるarchであれば(共有)ライブラリは異なるディレクトリにインストールされるのが当然だからだと思います。
でと、Windowsだとどうするのがいいのかなあ。
RUBY_SO_NAMEを変えられるようにする影響はいまいち読めないのですが、今回の話だけであれば、単に若くてまだ流行ってない方(=win64)のDLLに64とか付けるだけでいいかもしれません。
=end
Updated by arton (Akio Tajima) over 13 years ago
=begin
そんな地雷踏みに行かんでも、と思ったりはしますが...
まだ、ここは地雷ではありませんでした……
というのはともかく、
今回の話だけであれば、単に若くてまだ流行ってない方(=win64)のDLLに64とか付けるだけでいいかもしれません。
提案しておいてなんですが、私も、この案がベターに思います。
が、Makefile.subのマクロ組み合わせにうまく合わせようとすると
!if アークテクチャがx64なら
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)64$(MAJOR)$(MINOR)$(TEENY)
!else
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)
!endif
となり、あまりに恣意的なのでどうしたものか。
直接、コマンドラインから人間が手で打つ名前ではないので、$(arch)がx86以外であれば
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)-$(RUBY_PLATFOM)
といったところでしょうか。
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:43443] [Ruby 1.9 - Feature #4602] naming ruby dll (win32/64)"
on Apr.25,2011 19:42:58, artonx@yahoo.co.jp wrote:
直接、コマンドラインから人間が手で打つ名前ではないので、$(arch)がx86以外であれば
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)-$(RUBY_PLATFOM)
といったところでしょうか。
64だけ入れるのはia64があるので(動かしてる人を見たことないけど)
没、RUBY_PLATFORMを丸ごと入れるのもわざわざランタイム名で名前
を付けてる理由を考えれば没。
というわけで、私としては、ARCHだけを加えるのが妥当である、と
いう結論に達しました。
以下のパッチみたいのでどうでしょうかね。
x86かどうかでなくi386で見てるのは、普通じゃないことしたらそ¶
の報いを受けておけというありがたい配慮 :)¶
Index: win32/Makefile.sub¶
--- win32/Makefile.sub (revision 31347)
+++ win32/Makefile.sub (working copy)
@@ -130,6 +130,9 @@ ruby_version = $(MAJOR).$(MINOR).$(TEENY
!ifndef RUBY_SO_NAME
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)
+!if "$(ARCH)" != "i386"
+RUBY_SO_NAME = $(ARCH)-$(RUBY_SO_NAME)
+!endif
!endif
!ifndef RUBY_PLATFORM
RUBY_PLATFORM = $(arch)
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:43443] [Ruby 1.9 - Feature #4602] naming ruby dll (win32/64)"
on Apr.25,2011 19:42:58, artonx@yahoo.co.jp wrote:
直接、コマンドラインから人間が手で打つ名前ではないので、$(arch)がx86以外であれば
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)-$(RUBY_PLATFOM)
といったところでしょうか。
64だけ入れるのはia64があるので(動かしてる人を見たことないけど)
没、RUBY_PLATFORMを丸ごと入れるのもわざわざランタイム名で名前
を付けてる理由を考えれば没。
というわけで、私としては、ARCHだけを加えるのが妥当である、と
いう結論に達しました。
以下のパッチみたいのでどうでしょうかね。
x86かどうかでなくi386で見てるのは、普通じゃないことしたらそ¶
の報いを受けておけというありがたい配慮 :)¶
Index: win32/Makefile.sub¶
--- win32/Makefile.sub (revision 31347)
+++ win32/Makefile.sub (working copy)
@@ -130,6 +130,9 @@ ruby_version = $(MAJOR).$(MINOR).$(TEENY
!ifndef RUBY_SO_NAME
RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)
+!if "$(ARCH)" != "i386"
+RUBY_SO_NAME = $(ARCH)-$(RUBY_SO_NAME)
+!endif
!endif
!ifndef RUBY_PLATFORM
RUBY_PLATFORM = $(arch)
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by arton (Akio Tajima) over 13 years ago
=begin
artonです。
なかむら(う)さんの案に賛成します。
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?¶
=end
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
=begin
artonです。
なかむら(う)さんの案に賛成します。
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?¶
- 言語仕様に関わる部分ではない
- x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう
とか考えるといきなり入れてしまっていいのではないでしょうか。
=end
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
=begin
artonです。
なかむら(う)さんの案に賛成します。
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?¶
- 言語仕様に関わる部分ではない
- x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう
とか考えるといきなり入れてしまっていいのではないでしょうか。
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:43449] Re: [Ruby 1.9 - Feature #4602] naming ruby dll (win32/64)"
on Apr.28,2011 04:35:41, kosaki.motohiro@gmail.com wrote:
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?¶
- 言語仕様に関わる部分ではない
- x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう
とか考えるといきなり入れてしまっていいのではないでしょうか。
えーと、
(1) mingw版の64bit対応状況はあまり把握してないが、合わせる必
要はあるのでmingw版メンテナ=(nobu, luis)の同意(と必要な
パッチ)は要る。
(2) 今入れると1.9.2と1.9.3の間でバイナリ互換性をぶっ壊すこと
になるので、yuguiさんの同意は欲しい。
と、思います。
(2)については、小崎さんも仰るとおり、どうせユーザーいないと思
うので気にせずやっちまおうぜという気分でいます>yuguiさん
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
=begin
こんにちは、なかむら(う)です。
In message "[ruby-dev:43449] Re: [Ruby 1.9 - Feature #4602] naming ruby dll (win32/64)"
on Apr.28,2011 04:35:41, kosaki.motohiro@gmail.com wrote:
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?¶
- 言語仕様に関わる部分ではない
- x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう
とか考えるといきなり入れてしまっていいのではないでしょうか。
えーと、
(1) mingw版の64bit対応状況はあまり把握してないが、合わせる必
要はあるのでmingw版メンテナ=(nobu, luis)の同意(と必要な
パッチ)は要る。
(2) 今入れると1.9.2と1.9.3の間でバイナリ互換性をぶっ壊すこと
になるので、yuguiさんの同意は欲しい。
と、思います。
(2)については、小崎さんも仰るとおり、どうせユーザーいないと思
うので気にせずやっちまおうぜという気分でいます>yuguiさん
それでは。¶
U.Nakamura usa@garbagecollect.jp
=end
Updated by usa (Usaku NAKAMURA) over 13 years ago
- Status changed from Open to Assigned
- Assignee set to yugui (Yuki Sonoda)
(回答待ち)
Updated by yugui (Yuki Sonoda) over 13 years ago
- Assignee changed from yugui (Yuki Sonoda) to arton (Akio Tajima)
=begin
必要性は了解しましたので、変更には賛成します。
問題は互換性バージョンをどうするかなんですが、多分これでぎゃっと言うユーザーはいないので他のバイナリ非互換がなければ1.9.1のままで行こうかと思います。万が一困るユーザーがいたとしても、フリーズ後の期間で対応できるでしょう。
=end
Updated by mame (Yusuke Endoh) over 12 years ago
- Assignee changed from arton (Akio Tajima) to usa (Usaku NAKAMURA)
Updated by usa (Usaku NAKAMURA) over 12 years ago
- Status changed from Assigned to Closed
r31587 でした。