From: Katsuyuki Komatsu Date: 1999-05-19T09:55:54+09:00 Subject: [ruby-dev:6897] install report (1.3.3-990518) 小松です。 Ruby 1.3.3-990518ですが、今回は[ruby-dev:6837]に反応して Build Directoryを作ってみました。 手順は、 mkdir objdir cd objdir env CFLAGS=-O2 ../configure --with-readline-dir=/usr/local のような感じで行っています。 (1) ruby-1.3.3-990518.tar.gzにext/kconvとext/mandelが追加されて いますが、ext/kconvはobsoleteになった ([ruby-dev:6710]) はず。 (2) HP-UXのccでregex.cの変数partが未初期化という警告が出てました が……すでに[ruby-dev:6894]で渡辺さんが報告済みでした。 (3) AIXのgccで以下が出ますが……無視してよさそうですね。 ../parse.y:3134: warning: comparison is always 1 due to limited range of data type (4) AIXで-bI:$(ruby_inc)/ruby.impではなく-bI:$(hdrdir)/ruby.impに しないとruby.impが読めないというエラーでext/の下の拡張ライブラリ のリンクに失敗してしまいました。 添付のパッチをconfigure.inにあててautoconfかけて対処。 $(hdrdir)/ruby.impに変えてもextの下「以外」の拡張ライブラリの 作成が問題ないことは確認しています。 (5) ext/extmk.rbでmakeが決め打ちなので、たとえば「makeでVPATHが うまく動かないのでgmakeという名前のGNU makeを使おう」と したときにうまくいかず、拡張ライブラリのコンパイルに失敗して しまいます。 extmk.rbに$(MAKE)を引数として渡すことができるといいのかな? (6) Build Directoryを作成した場合、installがBSD互換でない マシンでextの下「以外」で拡張ライブラリを作成すると インストールに失敗します。 対応は、Build Directoryもrbconfig.rbに、たとえば CONFIG["topdir"]で覚えさせておいて、lib/mkmf.rbで if $install =~ %r!^[^\s/]+/! then $install = CONFIG["topdir"]+"/"+$install $install_data = CONFIG["topdir"]+"/"+$install_data end とするといった感じでしょうか。 # 他の手は[ruby-list:13908]で出ているので省略。 下の例では、ソースツリーは /home/pub/lang/ruby/ruby-1.3.3-990518 で、Build Directoryは /home/pub/lang/ruby/ruby-1.3.3-990518/hpux です。 /tmp_mntが付いてるのはautomountのせいなので気にしないでください。 % uname -r -s HP-UX B.10.20 % ruby extconf.rb creating Makefile % make gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2 -c uconv.c gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2 -c u2e.c gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2 -c ustring.c gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2 -c e2u.c ld -b -E -o uconv.sl uconv.o u2e.o ustring.o e2u.o -lc % make install /tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518/../install-sh -c uconv.sl /usr/local/lib/ruby/1.3/hppa1.1-hpux10.20/uconv.sl Make: Cannot load /tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518/../install-sh. Stop. *** Error exit code 1 Stop. % ruby -r rbconfig -e 'include Config' \ -e 'p CONFIG["srcdir"], CONFIG["INSTALL_PROGRAM"]' "/tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518" "../install-sh -c" % diff -r -u ruby-1.3.3-990518.orig/configure.in ruby-1.3.3-990518/configure.in --- ruby-1.3.3-990518.orig/configure.in Wed May 12 16:43:11 1999 +++ ruby-1.3.3-990518/configure.in Tue May 19 09:25:51 1999 @@ -450,7 +450,7 @@ rb_cv_dlopen=yes ;; aix*) LDSHARED='/usr/ccs/bin/ld' XLDFLAGS='-Wl,-bE:ruby.imp' - DLDFLAGS='-eInit_$(TARGET) -bI:$(ruby_inc)/ruby.imp -bM:SRE -T512 -H512 -lc' + DLDFLAGS='-eInit_$(TARGET) -bI:$(hdrdir)/ruby.imp -bM:SRE -T512 -H512 -lc' rb_cv_dlopen=yes ;; human*) DLDFLAGS='' -- 小松克行 / Katsuyuki Komatsu