[ruby-list:4] Re: ruby の install について

From: matz@... (Yukihiro Matsumoto)
Date: 1995-12-21 09:08:16 UTC
List: ruby-list #4
まつもと ゆきひろ@トヨタケーラムです.

In message "ruby の  install  について"
    on 95/12/21, KITA Jun-ichiro <kita@skylla.ics.es.osaka-u.ac.jp> writes:
|喜多@阪大情報と申します.
|
|`オブジェクト指向' であることと,`tk へのインターフェースがある' とい
|う点に興味をもったので,ruby をコンパイルしたのですが,いくつか気付い
|た点があったので,参考までに報告させて頂きます.

ありがとうございます.今後ともよろしく.

|等の問題があり,make test で成功するマシンは一台もありません.これはう
|ちの環境がおかしいのでしょうか?

これは配布直前に紛れ込んだバグです.以下のパッチを当ててくだ
さい.以下いくつかパッチがありますが,このメイルを patch -p
にパイプすると全部のパッチが当たるはずです.

--- array.c~	Thu Dec 21 14:39:19 1995
+++ array.c	Thu Dec 21 14:36:06 1995
@@ -283,8 +283,8 @@
 	    end = len + end;
 	    if (end < 0) end = 0;
 	}
-	if (len < end) end = len;
-	if (beg < end) {
+	if (end > len) end = len;
+	if (beg > end) {
 	    *lenp = 0;
 	}
 	else {
--- variable.c~	Thu Dec 21 16:23:39 1995
+++ variable.c	Thu Dec 21 16:13:09 1995
@@ -315,7 +315,7 @@
 }
 
 static void
-readonly_setter(id, var, val)
+readonly_setter(val, id, var)
     ID id;
     void *var;
     VALUE val;

|まず,configure で生成される Makefile についてですが,make clean する
|と,ext/ で make install されてしまいます.

確かに,これは失敗ですね.これのパッチはこうなります.

--- Makefile.in~	Wed Dec 20 12:06:12 1995
+++ Makefile.in	Thu Dec 21 17:39:57 1995
@@ -96 +96 @@
-		cd ext; ../ruby ./extmk.rb install
+		cd ext; ../ruby ./extmk.rb clean


|その他に,solaris 2.* では 
|-lsocket -lnsl が必要なのに Makefile に記述されていません.

これも修正します.

--- ext/socket/extconf.rb~	Thu Dec 21 17:58:31 1995
+++ ext/socket/extconf.rb	Thu Dec 21 17:57:01 1995
@@ -1,0 +2 @@
+have_library("nls", "gethostbyname")

|また,BSD/OS2.0.1 では,READ_DATA_PENDING が ReadDataPending() に 
|define されるのですが,リンク時に `ReadDataPending() が無い' と怒られ
|てしまいます.とりあえず
|
|#ifdef bsdi
|#  define READ_DATA_PENDING(fp) ((fp)->_r > 0)
|#endif
|
|として逃げていますが,これが正しいかどうかはよく分かりません.

多分,正しいと思います.

--- configure.in~	Wed Dec  6 12:23:41 1995
+++ configure.in	Thu Dec 21 18:00:49 1995
@@ -76,3 +76,3 @@
 	[FILE *f = stdin; f->_cnt = 0;], rb_cv_fcnt="_cnt", )
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     AC_TRY_COMPILE([#include <stdio.h>],
@@ -80,3 +80,3 @@
 fi
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     AC_TRY_COMPILE([#include <stdio.h>],
@@ -84,3 +84,3 @@
 fi
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     AC_TRY_COMPILE([#include <stdio.h>],
--- configure~	Wed Dec  6 12:23:44 1995
+++ configure	Thu Dec 21 18:01:27 1995
@@ -2167,3 +2167,3 @@
 
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
@@ -2184,3 +2184,3 @@
 fi
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF
@@ -2201,3 +2201,3 @@
 fi
-if test "$rb_cv_fcnt=" = ""; then
+if test "$rb_cv_fcnt" = ""; then
     cat > conftest.$ac_ext <<EOF


|当方ではいくつかのアーキテクチャでコンパイルしてみましたが,
|(configure; make しただけ)
|
|・solaris 2.3 をのせている SS/20 では make test で Segmentation Fault 
|  して core dump する.これは gcc でも cc でも同じです.test.rb の 
|  variable のところで core dump します.

上のパッチで直ります.

|・SONY の NEWS(NEWS-OS 4.2.1a,gcc 2.6.3),BSD/OS2.0.1(付属の gcc),
|  SS/10(solaris 1.1,cc),HP 9000(HP-UX A.09.05,gcc 2.6.3) で
|  は make test で
|    not ok array 2
|    test failed
|  といわれる

これも直ります.

|また,sample の tkbrowse.rb を実行すると,
|
|% ruby tkbrowse.rb 
|tkbrowse.rb:10:in `require': No such file to load -- tkscrollbox
|
|といわれてしまいます.lib には tkscrollbox が無いのですが,入れ忘れた
|のではないでしょうか?

そうですね.失敗が多いなあ.以下につけておきます.

--- /dev/null	Thu Dec 21 12:35:21 1995
+++ lib/tkscrollbox.rb	Tue Dec 19 18:29:05 1995
@@ -0,0 +1,31 @@
+#
+#		tkscrollbox.rb - Tk Listbox with Scrollbar
+#                                 as an example of Composite Widget
+#			$Date: 1995/12/12 18:21:01 $
+#			by Yukihiro Matsumoto <matz@caelum.co.jp>
+
+require 'tk.rb'
+
+class TkScrollbox:TkListbox
+  include TkComposite
+  def initialize_composite
+    list = TkListbox.new(@frame)
+    scroll = TkScrollbar.new(@frame)
+    @path = list.path
+
+    list.yscroll proc{|idx|
+	scroll.set *idx
+    }
+    list.pack 'side'=>'left','fill'=>'both','expand'=>'yes'
+    scroll.command proc{|idx|
+      list.yview *idx
+    }
+    scroll.pack 'side'=>'right','fill'=>'y'
+
+    delegate('DEFALUT', list)
+    delegate('foreground', list, scroll)
+    delegate('background', list, scroll)
+    delegate('borderwidth', @frame)
+    delegate('relief', @frame)
+  end
+end

|以上,指摘だけで申し訳ないですが,参考になれば幸いです.

大変参考になりました.ありがとうございます.

今日中にruby-0.95a.tar.gzを用意します.パッチがうまく当たら
なかったりした場合には,明日にでも

  ruby-archive@caelum.co.jp

に'get'というサブジェクトのメイルを送ってください.

# メイリングリストはruby-list@caelum.co.jpです.

In This Thread

Prev Next