立石です.

At Fri, 06 Jul 2001 18:18:20 +0900,
Akinori MUSHA <knu / iDaemons.org> wrote:
>  src/rough に入れてある ext/digest ですが、先ほどの更新で、当初
> からの目標であった各クラスの重複処理の共通化を達成しましたので、
> みなさんのレビューをお願いします。

Solaris8 での状況を報告します.

is16e0u20:~/work/ruby/rough/ext/digest$ ruby-1.6 extconf.rb 
checking for md5.h... yes
checking for MD5_Init()... no
checking for MD5Init()... no
checking for main() in -lmd... no
checking for () in -lcrypto... yes
checking for main() in -lssl... yes
checking for md5.h... yes
checking for MD5_Init()... yes
checking for MD5End()... no
checking for sha1.h... no
checking for sha.h... no
checking for ripemd.h... no
checking for rmd160.h... no
creating Makefile

is16e0u20:~/work/ruby/rough/ext/digest$ make
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sparc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT   -I/usr/include/openssl -c -o digest.o digest.c
In file included from digest.h:64,
                 from digest.c:31:
rmd160.h:30: sys/cdefs.h: No such file or directory
make: *** [digest.o] Error 1

となります.cdefs.hがないのは明らかですが,この中で定義されている
u_int32_t というものと,__BEGIN_DECLS,__END_DECLSを

  typedef unsigned int u_int32_t
  #define __BEGIN_DECLS
  #define __END_DECLS

として定義します.そして,各ファイルのsys/cdefs.hをすべてコメントに
するとmakeは通ります.がtest.shの最後でこけます.

is16e0u20:~/work/ruby/rough/ext/digest$ ./test.sh 2> err.log 1> test.log 
is16e0u20:~/work/ruby/rough/ext/digest$ cat err.log 
-e:1: [BUG] Bus Error
ruby 1.6.4 (2001-06-04) [sparc-solaris2.7]
Abort - core dumped

is16e0u20:~/work/ruby/rough/ext/digest$ cat test.log
creating Makefile
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sp
arc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include 
   -c -o digest.o digest.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sp
arc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include 
   -c -o md5.o md5.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sp
arc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include 
   -c -o sha1.o sha1.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sp
arc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include 
   -c -o rmd160.o rmd160.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_RMD160END -Dlint -I/kt-fs/exec/sp
arc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solaris7/include 
   -c -o rmd160hl.o rmd160hl.c
gcc -Wl,-G  -L/kt-fs/exec/sparc-solaris7/lib  -o digest.so digest.o md5.o sha1.o
 rmd160.o rmd160hl.o -L. -lruby-1.6 -lc 
0cc175b9c0f1b6a831c399e269772661
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
checking for md5.h... yes
checking for MD5_Init()... no
checking for MD5Init()... no
checking for main() in -lmd... no
checking for () in -lcrypto... yes
checking for main() in -lssl... yes
checking for md5.h... yes
checking for MD5_Init()... yes
checking for MD5End()... no
checking for sha1.h... no
checking for sha.h... no
checking for ripemd.h... no
checking for rmd160.h... no
creating Makefile
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_RMD160END -Dlint -I/kt
-fs/exec/sparc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solari
s7/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT   -I/usr/include/openssl -c
 -o digest.o digest.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_RMD160END -Dlint -I/kt
-fs/exec/sparc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solari
s7/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT   -I/usr/include/openssl -c
 -o sha1.o sha1.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_RMD160END -Dlint -I/kt
-fs/exec/sparc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solari
s7/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT   -I/usr/include/openssl -c
 -o rmd160.o rmd160.c
gcc -fPIC -g -O2 -fPIC  -DHAVE_CONFIG_H -DHAVE_MD5 -DHAVE_RMD160END -Dlint -I/kt
-fs/exec/sparc-solaris7/lib/ruby/1.6/sparc-solaris2.7 -I/kt-fs/exec/sparc-solari
s7/include -DHAVE_MD5_H -DHAVE_MD5_H -DHAVE_MD5_INIT   -I/usr/include/openssl -c
 -o rmd160hl.o rmd160hl.c
gcc -Wl,-G  -L/usr/lib -L/kt-fs/exec/sparc-solaris7/lib  -o digest.so digest.o s
ha1.o rmd160.o rmd160hl.o -L. -lruby-1.6 -lssl -lcrypto -lc 

今はこれ以上時間がとれないので,正常に動かすことができた場合,
改良後のパッチなど詳しくは後日報告します.
-- 
Takaaki Tateishi <ttate / jaist.ac.jp>