Issue #4602 has been reported by Akio T…
Feature #4602: naming ruby dll (win32/64)
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)
Akio_T
2
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)
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)
Akio_T
3
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)
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)
Akio_T
4
Issue #4602 has been updated by Akio T…
artonです。
なかむら(う)さんの案に賛成します。
Feature の場合、この後はどうするのが良いのでしょう? しばらく寝かしておいてある日パッチを入れるとか、いきなりパッチしてしまうとか?
Feature #4602: naming ruby dll (win32/64)
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)
Akio_T
5
arton$B$G$9!#(B
$B$J$+$`$i(B($B$&(B)$B$5$s$N0F$K;?@.$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
- $B8@8l;EMM$K4X$o$kItJ,$G$O$J$$(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
Akio_T
6
$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
64$B$@$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!”(BARCH$B$@$1$r2C$($k$N$,BEEv$G$“$k!”$H(B
$B$$$&7kO@$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
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
Akio_T
7
$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
- $B8@8l;EMM$K4X$o$kItJ,$G$O$J$$(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%j8_49@-$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)
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
Akio_T
9
Issue #4602 has been updated by mame (Yusuke E.).
Assignee changed from arton (Akio T.) to usa (Usaku NAKAMURA)
遠藤です。
このチケット、どういうステータスでしょうか?
とりあえず、trunk にコミットしたらどうでしょうか。もうコミット済?
Feature #4602: naming ruby dll (win32/64)
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
Akio_T
10
Issue #4602 has been updated by usa (Usaku NAKAMURA).
Status changed from Assigned to Closed
r31587 でした。
Feature #4602: naming ruby dll (win32/64)
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
Akio_T
11
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)
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