Project

General

Profile

Actions

Feature #4602

closed

naming ruby dll (win32/64)

Added by arton (Akio Tajima) almost 13 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
-
[ruby-dev:43426]

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) almost 13 years ago

=begin
そんな地雷踏みに行かんでも、と思ったりはしますが...

えーと、他プラットフォームだと、たしかRUBY_SO_NAMEはprefixやsuffixによっては変えられなくて、transformは効く、とかでしたよね。
なんでそれで問題が起きないのかというと、異なるarchであれば(共有)ライブラリは異なるディレクトリにインストールされるのが当然だからだと思います。

でと、Windowsだとどうするのがいいのかなあ。
RUBY_SO_NAMEを変えられるようにする影響はいまいち読めないのですが、今回の話だけであれば、単に若くてまだ流行ってない方(=win64)のDLLに64とか付けるだけでいいかもしれません。
=end

Updated by arton (Akio Tajima) almost 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) almost 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, 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
=end

Updated by usa (Usaku NAKAMURA) almost 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, 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
=end

Updated by arton (Akio Tajima) almost 13 years ago

=begin
artonです。

なかむら(う)さんの案に賛成します。

Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?

=end

Updated by kosaki (Motohiro KOSAKI) almost 13 years ago

=begin

artonです。

なかむら(う)さんの案に賛成します。

Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?

  • 言語仕様に関わる部分ではない
  • x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう

とか考えるといきなり入れてしまっていいのではないでしょうか。
=end

Updated by kosaki (Motohiro KOSAKI) almost 13 years ago

=begin

artonです。

なかむら(う)さんの案に賛成します。

Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?

  • 言語仕様に関わる部分ではない
  • x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう

とか考えるといきなり入れてしまっていいのではないでしょうか。
=end

Updated by usa (Usaku NAKAMURA) almost 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, wrote:

Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?

  • 言語仕様に関わる部分ではない
  • x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう

とか考えるといきなり入れてしまっていいのではないでしょうか。

えーと、

(1) mingw版の64bit対応状況はあまり把握してないが、合わせる必
要はあるのでmingw版メンテナ=(nobu, luis)の同意(と必要な
パッチ)は要る。

(2) 今入れると1.9.2と1.9.3の間でバイナリ互換性をぶっ壊すこと
になるので、yuguiさんの同意は欲しい。

と、思います。

(2)については、小崎さんも仰るとおり、どうせユーザーいないと思
うので気にせずやっちまおうぜという気分でいます>yuguiさん

それでは。

U.Nakamura
=end

Updated by usa (Usaku NAKAMURA) almost 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, wrote:

Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?

  • 言語仕様に関わる部分ではない
  • x64ユーザ数を考えるとミスってても、あとから変えてしまったところでたいして苦情はでなさそう

とか考えるといきなり入れてしまっていいのではないでしょうか。

えーと、

(1) mingw版の64bit対応状況はあまり把握してないが、合わせる必
要はあるのでmingw版メンテナ=(nobu, luis)の同意(と必要な
パッチ)は要る。

(2) 今入れると1.9.2と1.9.3の間でバイナリ互換性をぶっ壊すこと
になるので、yuguiさんの同意は欲しい。

と、思います。

(2)については、小崎さんも仰るとおり、どうせユーザーいないと思
うので気にせずやっちまおうぜという気分でいます>yuguiさん

それでは。

U.Nakamura
=end

Updated by usa (Usaku NAKAMURA) almost 13 years ago

  • Status changed from Open to Assigned
  • Assignee set to yugui (Yuki Sonoda)

(回答待ち)

Updated by yugui (Yuki Sonoda) almost 13 years ago

  • Assignee changed from yugui (Yuki Sonoda) to arton (Akio Tajima)

=begin
必要性は了解しましたので、変更には賛成します。

問題は互換性バージョンをどうするかなんですが、多分これでぎゃっと言うユーザーはいないので他のバイナリ非互換がなければ1.9.1のままで行こうかと思います。万が一困るユーザーがいたとしても、フリーズ後の期間で対応できるでしょう。
=end

Updated by mame (Yusuke Endoh) almost 12 years ago

  • Assignee changed from arton (Akio Tajima) to usa (Usaku NAKAMURA)

遠藤です。

このチケット、どういうステータスでしょうか?
とりあえず、trunk にコミットしたらどうでしょうか。もうコミット済?

--
Yusuke Endoh

Updated by usa (Usaku NAKAMURA) almost 12 years ago

  • Status changed from Assigned to Closed

r31587 でした。

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0