[Ruby 1.9 - Feature #4602][Open] naming ruby dll (win32/64)

Issue #4602 has been reported by Akio T…


Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Open
Priority: Normal
Assignee:
Category: build
Target version:

同一ディレクトリへ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)

Issue #4602 has been updated by Akio T…

そんな地雷踏みに行かんでも、と思ったりはしますが…
まだ、ここは地雷ではありませんでした……
というのはともかく、

今回の話だけであれば、単に若くてまだ流行ってない方(=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)

といったところでしょうか。


Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Open
Priority: Normal
Assignee:
Category: build
Target version:

同一ディレクトリへ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)

Issue #4602 has been updated by Usaku NAKAMURA.

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

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

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

Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Open
Priority: Normal
Assignee:
Category: build
Target version:

同一ディレクトリへ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)

Issue #4602 has been updated by Akio T…

artonです。

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

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


Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Open
Priority: Normal
Assignee:
Category: build
Target version:

同一ディレクトリへ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)

arton$B$G$9!#(B

$B$J$+$`$i(B($B$&(B)$B$5$s$N0F$K;[email protected]$7$^$9!#(B

Feature $B$N>l9g!"$3$N8e$O$I$&$9$k$N$,NI$$$N$G$7$g$&!)(B

$B$7$P$i$/?2$+$7$F$*$$$F$"$kF|%Q%C%A$rF~$l$k$H$+!"$$$-$J$j%Q%C%A$7$F$7$^$&$H$+!)(B

x64$B%f!<%6?t$r9M$($k$H%_%9$C$F$F$b!"$"$H$+$iJQ$($F$7$^$C$?$H$3$m$G$?$$$7$F6l>p$O$G$J$5$=$&(B

$B$H$+9M$($k$H$$$-$J$jF~$l$F$7$^$C$F$$$$$N$G$O$J$$$G$7$g$&$+!#(B

$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B

In message “[ruby-dev:43443] [Ruby 1.9 - Feature #4602] naming ruby dll
(win32/64)”
on Apr.25,2011 19:42:58, [email protected] wrote:

$BD>@!"%3%^%s%I%i%$%s$+$i?M4V$,<j$GBG$DL>A0$G$O$J$$$N$G!"(B$(arch)$B$,(Bx86$B0J30$G$"$l$P(B

RUBY_SO_NAME = $(RT)-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)$(TEENY)-$(RUBY_PLATFOM)

$B$H$$$C$?$H$3$m$G$7$g$&$+!#(B

[email protected]$1F~$l$k$N$O(Bia64$B$,$"$k$N$G(B($BF0$+$7$F$k?M$r8+$?$3$H$J$$$1$I(B)
$BKW!"(BRUBY_PLATFORM$B$r4]$4$HF~$l$k$N$b$o$6$o$6%i%s%?%$%`L>$GL>A0(B
$B$rIU$1$F$kM}M3$r9M$($l$PKW!#(B

$B$H$$$&$o$1$G!";d$H$7$F$O!"([email protected]$1$r2C$($k$N$,BEEv$G$"$k!"$H(B
$B$$$&[email protected]$KC#$7$^$7$?!#(B
$B0J2<$N%Q%C%A$_$?$$$N$G$I$&$G$7$g$&$+$M!#(B

x86$B$+$I$&$+$G$J$/(Bi386$B$G8+$F$k$N$O!"IaDL$8$c$J$$$3$H$7$?$i$=(B

$B$NJs$$$r<u$1$F$*$1$H$$$&$"$j$,$?$$G[N8(B :slight_smile:

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)

$B$=$l$G$O!#(B

$B$3$s$K$A$O!"$J$+$`$i(B($B$&(B)$B$G$9!#(B

In message “[ruby-dev:43449] Re: [Ruby 1.9 - Feature #4602] naming ruby
dll (win32/64)”
on Apr.28,2011 04:35:41, [email protected] wrote:

Feature $B$N>l9g!"$3$N8e$O$I$&$9$k$N$,NI$$$N$G$7$g$&!)(B

$B$7$P$i$/?2$+$7$F$*$$$F$"$kF|%Q%C%A$rF~$l$k$H$+!"$$$-$J$j%Q%C%A$7$F$7$^$&$H$+!)(B

x64$B%f!<%6?t$r9M$($k$H%_%9$C$F$F$b!"$"$H$+$iJQ$($F$7$^$C$?$H$3$m$G$?$$$7$F6l>p$O$G$J$5$=$&(B

$B$H$+9M$($k$H$$$-$J$jF~$l$F$7$^$C$F$$$$$N$G$O$J$$$G$7$g$&$+!#(B

$B$(!<$H!"(B

(1) mingw$BHG$N(B64bit$BBP1~>u67$O$"$^$jGD0.$7$F$J$$$,!“9g$o$;$kI,(B
$BMW$O$”$k$N$G(Bmingw$BHG%a%s%F%J(B=(nobu,
luis)$B$NF10U(B($B$HI,MW$J(B
$B%Q%C%A(B)$B$OMW$k!#(B

(2)
$B:#F~$l$k$H(B1.9.2$B$H(B1.9.3$B$N4V$G%P%$%J%[email protected]$r$V$C2u$9$3$H(B
$B$K$J$k$N$G!"(Byugui$B$5$s$NF10U$OM_$7$$!#(B

$B$H!";W$$$^$9!#(B

(2)$B$K$D$$$F$O!">.:j$5$s$b6D$k$H$$j!"$I$&$;%f!<%6!<$$$J$$$H;W(B
$B$&$N$G5$$K$;$:$d$C$A$^$
$&$<$H$$$&5$J,$G$$$^$9!d(Byugui$B$5$s(B

$B$=$l$G$O!#(B

Issue #4602 has been updated by Usaku NAKAMURA.

Status changed from Open to Assigned
Assignee set to Yuki S.

(回答待ち)

Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Assigned
Priority: Normal
Assignee: Yuki S.
Category: build
Target version:

=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

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

Assignee changed from arton (Akio T.) to usa (Usaku NAKAMURA)

遠藤です。

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


Yusuke E. [email protected]

Feature #4602: naming ruby dll (win32/64)
https://bugs.ruby-lang.org/issues/4602#change-26107

Author: arton (Akio T.)
Status: Assigned
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category: build
Target version:

=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

Issue #4602 has been updated by usa (Usaku NAKAMURA).

Status changed from Assigned to Closed

r31587 でした。

Feature #4602: naming ruby dll (win32/64)
https://bugs.ruby-lang.org/issues/4602#change-26130

Author: arton (Akio T.)
Status: Closed
Priority: Normal
Assignee: usa (Usaku NAKAMURA)
Category: build
Target version:

=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

Issue #4602 has been updated by Yuki S…

Assignee changed from Yuki S. to Akio T.

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

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


Feature #4602: naming ruby dll (win32/64)
http://redmine.ruby-lang.org/issues/4602

Author: Akio T.
Status: Assigned
Priority: Normal
Assignee: Akio T.
Category: build
Target version:

=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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs