2012-03-04 色々と更新
2012-03-05 Tcl/Tkを追加
2012-04-03 Termcap は Ruby のビルドに必要ないことが判明したので削除
いい加減に1.9系に移行するためにRubyをビルドしてみた。その作業メモ。
(しかし、どの拡張ライブラリがビルドされていないのか簡単に確認する方法はないのだろうか。)
方針
- ビルド済みバイナリは使わない
- なるべく最新版を使用する
- 拡張ライブラリが依存するライブラリは静的リンクする
ビルド環境はMinGW(GCC 4) + MSYS。シェルにはNYAOSを使用した。
展開に使用するtarはMSYSに入っている物にしなければならない。詳しくはINSTALL.W32を参照。
wget http://www.openssl.org/source/openssl-1.0.0g.tar.gz
tar zxf openssl-1.0.0g.tar.gz
cd openssl-1.0.0g
sh ./config --prefix=%LIBS_PATH% no-shared
make
make test
make install_sw
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz
cd libiconv-1.14
sh ./configure --prefix=%LIBS_PATH% --enable-static --disable-shared --disable-nls
make
make check
make install
GDBM 1.8.3にパッチを当ててビルド。
wget ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.8.3.tar.gz
wget http://sites.google.com/site/wantora/download/gdbm-1.8.3-mingw.patch --content-disposition
tar zxf gdbm-1.8.3.tar.gz
cd gdbm-1.8.3
patch -p1 < ../gdbm-1.8.3-mingw.patch
sh ./configure --prefix=%LIBS_PATH% --enable-static --disable-shared
make
make install
make install-compat
wget http://sourceforge.net/projects/pdcurses/files/pdcurses/3.4/PDCurses-3.4.tar.gz/download
tar zxf PDCurses-3.4.tar.gz
cd PDCurses-3.4/win32
make -f mingwin32.mak
cp ../curses.h %LIBS_PATH%/include
cp pdcurses.a %LIBS_PATH%/lib/libcurses.a
wget http://prdownloads.sourceforge.net/libpng/zlib-1.2.6.tar.bz2?download
tar jxf zlib-1.2.6.tar.bz2
cd zlib-1.2.6
make -f win32/Makefile.gcc
make -f win32/Makefile.gcc test
make -f win32/Makefile.gcc install INCLUDE_PATH=%LIBS_PATH%/include LIBRARY_PATH=%LIBS_PATH%/lib BINARY_PATH=%LIBS_PATH%/bin
最新版はうちの環境*1ではなぜか動作がもっさりするので、Index of /win32のソースを使用。
wget http://jarp.does.notwork.org/win32/readline-4.3-2-src.zip
unzip readline-4.3-2-src.zip
cd readline-4.3-2/win32
make DLL=0 CC=gcc
make DLL=0 install prefix=%LIBS_PATH%
mv %LIBS_PATH%/lib/libhistory-static.a %LIBS_PATH%/lib/libhistory.a
mv %LIBS_PATH%/lib/libreadline-static.a %LIBS_PATH%/lib/libreadline.a
wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
tar zxf yaml-0.1.4.tar.gz
cd yaml-0.1.4
sh ./configure --prefix=%LIBS_PATH% --enable-static --disable-shared CFLAGS=-DYAML_DECLARE_STATIC
make
make check
make install
wget ftp://sourceware.org/pub/libffi/libffi-3.0.10.tar.gz
tar zxf libffi-3.0.10.tar.gz
cd libffi-3.0.10
sh ./configure --prefix=%LIBS_PATH% --enable-static --disable-shared
make
make check
make install
静的リンクだとうまく動かないので動的リンクにしている。
wget http://prdownloads.sourceforge.net/tcl/tcl8.5.11-src.tar.gz
wget http://prdownloads.sourceforge.net/tcl/tk8.5.11-src.tar.gz
tar zxf tcl8.5.11-src.tar.gz
tar zxf tk8.5.11-src.tar.gz
cd tcl8.5.11/win
sh ./configure --prefix=%LIBS_PATH% --enable-shared --enable-threads
make
make test
make install
cd ../../tk8.5.11/win
sh ./configure --prefix=%LIBS_PATH% --enable-shared --enable-threads
make
make test
make install
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.bz2
tar jxf ruby-1.9.3-p125.tar.bz2
cd ruby-1.9.3-p125
sh ./configure --prefix=%RUBY19_PATH% --enable-shared --with-opt-dir=%LIBS_PATH% --with-libffi-include=%LIBS_PATH%/lib/libffi-3.0.10/include --with-tclConfig-file=%LIBS_PATH%/lib/tclConfig.sh --with-tkConfig-file=%LIBS_PATH%/lib/tkConfig.sh CFLAGS="-DYAML_DECLARE_STATIC -DREADLINE_STATIC"
make
make check 2>&1 | tee make-check.log
make install-all
cd %LIBS_PATH%
cp -r lib/tcl8 lib/tcl8.5 lib/tk8.5 %RUBY19_PATH%/lib
cp bin/tcl85.dll bin/tk85.dll %RUBY19_PATH%/bin
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p358.tar.bz2
tar jxf ruby-1.8.7-p358.tar.bz2
cd ruby-1.8.7-p358
sh ./configure --prefix=%RUBY18_PATH% --enable-shared --with-winsock2 --with-opt-dir=%LIBS_PATH% --with-tclConfig-file=%LIBS_PATH%/lib/tclConfig.sh --with-tkConfig-file=%LIBS_PATH%/lib/tkConfig.sh CFLAGS="-DREADLINE_STATIC"
make
make check 2>&1 | tee make-check.log
make install-all
cd %LIBS_PATH%
cp -r lib/tcl8 lib/tcl8.5 lib/tk8.5 %RUBY18_PATH%/lib
cp bin/tcl85.dll bin/tk85.dll %RUBY18_PATH%/bin