Index: [Article Count Order] [Thread]

Date:  Sun, 24 Feb 2008 13:34:54 +0900
From:  "U.Nakamura" <usa@...>
Subject:  path of $(RUBY)
To:  modruby-ja@...
Message-Id:  <20080224132419.FCAD.USA@...>
X-Mail-Count: 00469

こんにちは、なかむら(う)です。

久し振りにerubyをmake installしようとして気付いたのですが、
Makefile中の$(RUBY)が単に$(RUBY_INSTALL_NAME)になっていて、こ
れにはパスが含まれていないため、現在のコンパイル対象となるruby
と同じファイル名で別のパスにtrunkのrubyがインストールされてい
て、そちらがPATH上で優先されている場合、trunkのrubyを使ってフ
ァイルをコピーしようとします。
結果として、trunkにはftoolsがないのでインストールできません。

日本語だと意味不明だと思うので例を示すと、こうなります。

  $ which ruby
  /usr/local/bin/ruby
  $ ruby -v
  ruby 1.9.0 (2008-02-24 revision 15591) [i386-netbsdelf]
  $ /home/usa/bin/ruby -v
  ruby 1.8.6 (2008-02-22 patchlevel 5000) [i386-netbsdelf]
  $ /home/usa/bin/ruby configure.rb
  ...
  $ make
  ...
  # make install
  :0:in `require': no such file to load -- ftools (LoadError)
  ...

fileutilsなりunなり使おうぜ、というのが正しい修正なのだと思い
ますが、期待してるのと違うrubyを実行しちゃうというのがそもそ
もまずそうな気がするので、そこを修正するパッチを用意してみま
した。
なお、本当はautoconf.rb(だっけ?)を直すべきなんでしょうが、手
元にないのでconfigure.rbを直接いじってます。

Index: Makefile.in
===================================================================
--- Makefile.in	(revision 137)
+++ Makefile.in	(working copy)
@@ -28,7 +28,7 @@ CC = @CC@
 AR = @AR@
 LD = @LD@
 RANLIB = @RANLIB@
-RUBY = $(RUBY_INSTALL_NAME)
+RUBY = @RUBY@
 
 CFLAGS = @CFLAGS@ -I. -I$(hdrdir)
 LDFLAGS = @LDFLAGS@
Index: configure.rb
===================================================================
--- configure.rb	(revision 137)
+++ configure.rb	(working copy)
@@ -291,6 +291,11 @@ $CC = CONFIG["CC"]
 $AR = CONFIG["AR"]
 $LD = "$(CC)"
 $RANLIB = CONFIG["RANLIB"]
+if File::ALT_SEPARATOR
+  $RUBY = "$(RUBY_INSTALL_NAME:#{File::SEPARATOR}=#{File::ALT_SEPARATOR})"
+else
+  $RUBY = "$(RUBY_INSTALL_NAME)"
+end
 
 if not defined? CFLAGS
   CFLAGS = CONFIG["CFLAGS"]
@@ -319,7 +324,7 @@ $LDSHARED = CONFIG["LDSHARED"]
 $EXEEXT = CONFIG["EXEEXT"]
 $DLEXT = CONFIG["DLEXT"]
 
-$RUBY_INSTALL_NAME = CONFIG["RUBY_INSTALL_NAME"]
+$RUBY_INSTALL_NAME = File.join("$(bindir)", CONFIG["RUBY_INSTALL_NAME"])
 $RUBY_SHARED = (CONFIG["ENABLE_SHARED"] == "yes")
 $LIBRUBYARG = CONFIG["LIBRUBYARG"]
 if $RUBY_SHARED
@@ -375,6 +380,7 @@ AC_SUBST("CC")
 AC_SUBST("AR")
 AC_SUBST("LD")
 AC_SUBST("RANLIB")
+AC_SUBST("RUBY")
 
 AC_SUBST("CFLAGS")
 AC_SUBST("DEFS")

それでは。
-- 
U.Nakamura <usa@...>