From: nobu.nakada@... Date: 2003-07-12T01:59:32+09:00 Subject: [ruby-dev:20635] Re: compiling Ruby on AIX (powerpc-ibm-aix4.3.3.0) and Alpha OSF/1 (alphaev67-dec-osf5.1) なかだです。 At Sat, 12 Jul 2003 00:12:51 +0900, NISHIMATSU Takeshi wrote: > > > ● AIX (powerpc-ibm-aix4.3.3.0) > > > CC=ccでコンパイル, テストとも成功しました. > > > > CC=gccだと、どうでしょうか。たぶんこのパッチでいけるんじゃない > > かと思うんですが。 > > 当サイトのAIXへの gcc(version 2.95.2)のインストール > のしかたが悪いのか -brtl オプションがあるとダメでした. (ruby-bugs:PR#1007)もやはりpowerpc-ibm-aix4.3.3.0なんですが、 gccが2.95.3なのでそのバージョンの違いかも知れません。確かに 2.95.2はちょっと古いような。 info gccすると、-brtlオプションってC++でruntime-linkingするには 必要、みたいなことが書いてありますが。 > また, ext/curses/, ext/digest/, ext/zlib/ がコンパイル > できませんでした. 参考にならなくて申し訳ないです. これはどんな風に失敗してるんでしょうか。 > たぶん一般的にはあててはいけないパッチ: 問答無用で-brtlを付けるんじゃなくて、受け付けられるかチェックし たほうがよさそうですね。 > でしたので, わけもわからず -D_XOPEN_SOURCE_EXTENDED をつけて > みましたところOKのようです. うーん、これは付けても他の環境にまずい影響はないのかな。 > > > ext/socket/ のでもコンパイルが止まりました. 作られる > > > ext/socket/Makefile の -Dss_familly=__ss_familly > > > を削り, -DHAVE_SOCKADDR_STORAGE を付け加えるとコンパイル > > > に成功しました. ext/socket/extconf.rb を直せばよいと思うの > > > ですが... > > > > 前者は以前から話が出てますが、後者はどのようにチェックに失敗し > > てるのでしょうか。詳細はmkmf.logを見れば分かるはずです。 > > ss_familly が原因のようです. mkmf.log の一部: 前に出てた案はどんなのだったかなぁ。 > パッチです: > ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー > --- ext/socket/extconf.rb.orig Fri Jul 11 22:39:42 2003 > +++ ext/socket/extconf.rb Fri Jul 11 22:42:42 2003 > @@ -1,6 +1,11 @@ > require 'mkmf' > > -$CPPFLAGS += " -Dss_family=__ss_family -Dss_len=__ss_len" > +case RUBY_PLATFORM > +when /alpha.*-osf.*/ > + # Keep ss_family itself. ss_len is not in use. あれ、aixじゃなくてosfですか? いずれにしても、PLATFORMで分けるよりもss_familyの有無で分けたほ うがいいと思います。 Index: extconf.rb =================================================================== RCS file: /cvs/ruby/src/ruby/ext/socket/extconf.rb,v retrieving revision 1.27 diff -u -2 -p -r1.27 extconf.rb --- extconf.rb 6 May 2003 16:48:51 -0000 1.27 +++ extconf.rb 11 Jul 2003 16:58:02 -0000 @@ -1,6 +1,4 @@ require 'mkmf' -$CPPFLAGS += " -Dss_family=__ss_family -Dss_len=__ss_len" - case RUBY_PLATFORM when /bccwin32/ @@ -108,65 +106,20 @@ EOS end - if try_link(< -# include -#else -# include -# include -# include -# include -# include -#endif -int -main() -{ - struct sockaddr_in sin; - - sin.sin_len; - return 0; -} -EOF - $CFLAGS="-DHAVE_SIN_LEN "+$CFLAGS +WIN32 = macro_defined?("_WIN32", "") +unless WIN32 + headers = %w"sys/types.h netdb.h string.h sys/socket.h netinet/in.h" end - - if try_link(< -# include -#else -# include -# include -# include -# include -#endif -int -main() -{ - struct sockaddr_storage ss; - - ss.ss_family; - return 0; -} -EOF - $CFLAGS="-DHAVE_SOCKADDR_STORAGE "+$CFLAGS +unless have_struct_member("struct sockaddr", "ss_family", headers) + $defs.push("-Dss_family=__ss_family") + $defs.push("-Dss_len=__ss_len") end - - if try_link(< -#include -#include -#include -#include -int -main() -{ - struct sockaddr sa; - - sa.sa_len; - return 0; -} -EOF - $CFLAGS="-DHAVE_SA_LEN "+$CFLAGS +if have_struct_member("struct sockaddr_in", "sin_len", headers) + $defs.push("-DHAVE_SIN_LEN") +end +if have_struct_member("struct sockaddr_storage", "ss_family", headers) + $defs.push("-DHAVE_SOCKADDR_STORAGE") +end +if have_struct_member("struct sockaddr", "sa_len", headers) + $defs.push("-DHAVE_SA_LEN") end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦