[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:41501] Re: sarge_scm_について



犬飼 大と申します。

unstable版のslibとscmのDebianパッケージをインストールしてみたところ、
後述する倍精度実数演算のエラーは残りますが、特別な設定なしでも動作しま
した。Sarge版のパッケージがおかしいか、小林さんの環境で何か悪さをする
ものが入っているのかも知れません。SCM_INIT_PATHはscmが知っていますので、
わたしは設定していません。原因を特定できればDebianのコミュニティーに貢
献できる場合もあるのではないでしょうか。

# インストールしたパッケージはどのようにコンパイルされたかがわかりませ
# んので削除してしまいました。


> 途中テストで
> -----
> errors were:
> (SECTION (got expected (call)))
> ((6 5 6) (#f #t (mult-float-print-test #f)))
> ((6 5 6) (#f #t (mult-float-print-test #f)))
> ((6 5 6) (#f #t (mult-float-print-test #f)))
> ((6 5 6) (#f #t (mult-float-print-test #f)))
> ((6 5 6) (#f #t (mult-float-print-test #f)))
> -----
> と こんなのがでましたが目を閉じて見なかったことにしました
> 

これはscmが内部で使用する倍精度実数演算の仮数部の丸め誤差によるもので、
コンパイラもしくはライブラリが対処すべき問題と考えます。woodyではデフォ
ルトでコンパイルして問題が出ていまませんでした。

gccでは、コンパイル時の最適化オプションによっては失われる桁があること
が知られています。woodyのgccでは-O2を指定した時に保持する桁数が最大で
したが現在のgccでは必ずしもそうではないようで、今回わたしはDebianのgcc
3.3.4の最適化オプションを-O3にしてコンパイルしました。

scmに附属のMakefileが使用するbuild.scmでわたしが書き換えた部分を添付し
ます。対症療法であること、この対処がいつまで有効かわからないこと、同時
に解決したい問題が他にもあることなどにより、scmの作者にはまだ報告して
いません。ご自分の責任でご利用下さい。

dai -- http://www4.ocn.ne.jp/~inukai/

*** build.scm.orig	2004-09-27 01:49:58.000000000 +0900
--- build.scm	2004-09-26 23:52:25.000000000 +0900
***************
*** 531,540 ****
--- 531,545 ----
  
       (m linux "" "-lm" "/lib/libm.so" () ())
       (c linux "" "-lc" "/lib/libc.so" () ())
       (dlll linux "-DSUN_DL" "-ldl" #f () ())
       (regex linux "" "" "" () ())
+      (editline linux "" "-lreadline" "/usr/lib/libreadline.so" () ())
+      ;; Despite libreadline.so.4(.3) in /lib with Debian-Unstable 
+      ;; version(kernel 2.4.26), thte default ld.so can not find it.
+      ;; So it is symbolic-linked to /usr/lib as libreadline.so.
+      ;; dai -- 2004-07-18
       (graphics linux "-I/usr/include/X11 -DX11" "-L/usr/X11R6/lib -lX11"
  	       "/usr/X11R6/lib/libX11.so" () ())
       (curses linux "" "-lcurses" "/lib/libncurses.so" () ())
       (nostart linux "" "" #f () ())
       (dump linux "" "" #f ("unexelf.c" "gmalloc.c") ())
***************
*** 1005,1015 ****
  
  (defcommand compile-c-files linux
    (lambda (files parms)
      (and (batch:try-chopped-command
  	  parms
! 	  "gcc"
  	  ;;(if (member "-g" (c-includes parms)) "" "-O2")
  	  "-c" (c-includes parms)
  	  (include-spec "-I" parms)
  	  (c-flags parms)
  	  files)
--- 1010,1020 ----
  
  (defcommand compile-c-files linux
    (lambda (files parms)
      (and (batch:try-chopped-command
  	  parms
! 	  "gcc" "-O3"
  	  ;;(if (member "-g" (c-includes parms)) "" "-O2")
  	  "-c" (c-includes parms)
  	  (include-spec "-I" parms)
  	  (c-flags parms)
  	  files)
***************
*** 1029,1039 ****
  	    (results
  	     (map
  	      (lambda (fname)
  		(and (batch:try-command
  		      parms
! 		      "gcc" "-shared" "-o"
  		      (string-append fname ".so")
  		      (string-append fname ".o")
  		      ld-opts)
  		     (batch:delete-file
  		      parms (string-append fname ".o"))
--- 1034,1050 ----
  	    (results
  	     (map
  	      (lambda (fname)
  		(and (batch:try-command
  		      parms
! 		      "gcc" "-shared" 
!   		      (cond
! 		       ((equal? fname "x") "-L/usr/X11R6/lib -lSM -lICE -lXext -lX11")
! 		       ((equal? fname "xt") "-L/usr/X11R6/lib -lXmu -lXt -lSM -lICE -lXext --lX11")
! 		       ((equal? fname "xaw") "-L/usr/X11R6/lib -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lXpm")
!   		       (else ""))
! 		      "-o"
  		      (string-append fname ".so")
  		      (string-append fname ".o")
  		      ld-opts)
  		     (batch:delete-file
  		      parms (string-append fname ".o"))
***************
*** 1618,1629 ****
  		 (lambda (fname)
  		   (and (batch:try-command
  			 parms
  			 "cc" "-shared"
  			 (cond
- 			  ((equal? fname "edline") "-lreadline")
  			  ((equal? fname "x") "-L/usr/X11R6/lib -lSM -lICE -lXext -lX11 -lxpg4")
  			  (else ""))
  			 "-o"
  			 (string-append fname ".so")
  			 (string-append fname ".o"))
  			(batch:delete-file
--- 1629,1641 ----
  		 (lambda (fname)
  		   (and (batch:try-command
  			 parms
  			 "cc" "-shared"
  			 (cond
  			  ((equal? fname "x") "-L/usr/X11R6/lib -lSM -lICE -lXext -lX11 -lxpg4")
+ 			  ((equal? fname "xt") "-L/usr/X11R6/lib -lXmu -lXt -lSM -lICE -lXext --lX11")
+ 			  ((equal? fname "xaw") "-L/usr/X11R6/lib -lXaw -lXmu -lXt -lSM -lICE -lXext -lX11 -lXpm")
  			  (else ""))
  			 "-o"
  			 (string-append fname ".so")
  			 (string-append fname ".o"))
  			(batch:delete-file