〜2002年10月中旬〜
おぉ、 なるほど。 最終的にはcvsupだけでいいはずなので、 m3config/src/LINUXLIBC6を書き換えて
INSTALL_ROOT = "/tmp/ezm3"
として、ezm3はいつでも消せるようにしてみるかな。
GCC 3.2だとエラーになるなあ。
INSTALL_ROOT = "/tmp/ezm3" X11ROOT = "/hogehoge" CC = ["/usr/bin/gcc", "-c"] OPT_FLAG = "-Os" BOPT_FLAG = "-Os" GNU_CC = "/usr/bin/gcc" GNU_CFLAGS = "-Os"
としてみよう。Xは使わないのでわざと見つからないようにしてみた。 共有ライブラリも要らないので
% PLATFORM_SUPPORTS_SHARED_LIB = "T"
とコメントアウト。
あ、m3cgc1: Invalid option `-Os'と言われた。 勢いでBOPT_FLAGまでいじったのが間違いか。 明日にしよう。
configure時に--prefix=c:/rubyのように指定すればいいということに気づく。 /usrとか-I/usrのようなものだけ変換するようだ。
なんだかんだで全然うまくいかず
INSTALL_ROOT = "/tmp/ezm3" X11ROOT = "/usr/X11R6/lib" OPT_FLAG = "-Os" M3CC_MAKE = ["make", "BISON=yacc"]
で手を打つ。あとは
% PATH=/usr/bin:$PATH make CFLAGS=-Os
てな感じで。
こちらは
% PATH=/tmp/ezm3/bin:/usr/bin:$PATH make M3FLAGS="-DSTATIC -DNOGUI" % strip client/LINUXLIBC6/cvsup
と実行し、できあがったcvsupを/usr/local/binにコピー。okだ。 /tmp/ezm3以下は消していい。
ためしにglibc 2.2.2の環境で作るとruntime error。 なぜか-DSTATICを外してdynamicにすると動く。全くもってglibcってやつは謎だ。
[ruby-dev:18494]を追試。確かに起こる。openしたまま更にopenするのがまずいのか? いや、大丈夫だ。とするとflockか?そのようだ。
bisonを1.50にした所為かエラーになってしまう。
bison -y -d -b aicasm_gram aicasm_gram.y aicasm_gram.y:921.21: parse error, unexpected ":", expecting ";" or "|" aicasm_gram.y:936.2-5: $$ of `critical_section_start' has no declared type aicasm_gram.y:938.2-5: $$ of `critical_section_start' has no declared type
byaccを使うと-pを受けつけてくれないし。
yacc -d -b aicasm_macro_gram -p mm aicasm_macro_gram.y usage: yacc [-dlrtv] [-b file_prefix] filename
bisonを1.35に戻そう。byaccもCygwinのパッケージになってるbyacc 1.9をインストールしとく。 あ、byacc 1.9なら-pも-oも使えるじゃん。 ってことはbisonを使う必要はないわけだ。
CONFIG_INPUT_KEYBOARDなんていつの間に増えたんだ? キー入力を受けつけないのは同じ。根本的にconfigを間違えているんだろうか?
久し振りにBadTransだ。ruby-bugsのほうもなんだかわからないvirusが相変わらず来てるなあ。
使いものにならないらしい。-2が出てる。例によってどたばたは続く。
Comprehensive Ruby Program Repository. 包括的算譜宝殿?
もうftools.rbには隠居してもらいたいのに、余計な提案をしてしまったような。 提案した手前書いてみたが、全然納得いかないものになり鬱。
Changes: Critical bugs the in 2.3 release were fixed.
ということなので早速更新。今回はw3m, cvsup, wineも問題なし。
一昨日2.0.10を入れたんだけど、もう3.0.3になってる。
なぜかいきなり1.50から1.75だ。
[ruby-talk:53308]を見てて、blksize問題を思い出した。 1.7なら
st.blksize || 4096
で、1.6なら
st.blksize.nonzero? || 4096
とする必要がある。これは面倒だから1.6もnilを返すようにしたほうがよさそう。 ftools.rbは面倒なので8192バイト固定にしてあったりする。2MBはやはりでかすぎた。
とうとう[test]から[curr]へ移行したようだ。
そのために実は"--^M"オプションが用意されてるわけだが、
% cat -v foo.sh #!/usr/local/bin/ruby --^M puts "hello"^M % ./foo.sh hello
env経由じゃだめなんだよねえ。
% cat -v bar.sh #!/usr/bin/env ruby --^M puts "hello"^M % ./bar.sh : No such file or directory
"ruby --^M"というコマンドを起動しようとするから。FreeBSDならいけるんだけど。
10/14に出ていたらしい。
このところ週末はのんびりビデオ観賞三昧だったもんだから、 なかださんがしびれを切らしたようだ。もうしわけない。 かなり変更してるのでdiffファイルを見ただけだとわからない。 パッチをあててからじっくり見よう。
win32/Makefile.subだけrejectしてしまうなあ。
patching file win32/Makefile.sub Hunk #3 FAILED at 96. Hunk #9 succeeded at 291 with fuzz 2. Hunk #18 succeeded at 487 (offset -3 lines). 1 out of 18 hunks FAILED -- saving rejects to file win32/Makefile.sub.rej
かなり小さくなるね。パッチをあてる前:
% ls -l lib/mkmf.rb ext/extmk.rb -rwxr-xr-x 1 watanabe ruby 14205 Oct 4 14:18 ext/extmk.rb -rw-r--r-- 1 watanabe ruby 21343 Sep 25 17:49 lib/mkmf.rb
パッチをあてた後:
% ls -l lib/mkmf.rb ext/extmk.rb -rwxr-xr-x 1 watanabe ruby 4944 Oct 19 23:10 ext/extmk.rb -rw-r--r-- 1 watanabe ruby 19729 Oct 19 23:10 lib/mkmf.rb
クロス環境を試す。configure.inの
MINIRUBY="$(RUBY) -I`pwd` -rfake"
がまずい。
MINIRUBY="\$(RUBY) -I`pwd` -rfake"
としよう。
Makefile.inのこの変更もわからない。
class TOPLEVEL_CONST;
こんなクラスはないと思うんだけど。
mkmf.rbの
for f in files return true if t < (mtime[f] or next) end
もまずいなあ。void value expression (SyntaxError)になる。 あ、これは
ruby 1.7.3 (2002-10-16) [i386-linux]
の所為か。最新にしたら問題ない。 [ruby-dev:18534]はこれのためか。
ext/はauto-importになってるなあ。そうか。defines.hのRUBY_EXPORT対応が抜けているからだ。 というよりこれもパッチに入れ忘れたというべき?
1.3.13も落ち着いた気がするので、そろそろLinux上のクロス環境も更新しよう。 基本的には 前回テスト的にインストールしたのと同じ手順だ。今回使うのは以下のファイル。
binutils-20020706-2-src.tar.bz2 gcc-3.2-1-src.tar.bz2 cygwin-1.3.13-2.tar.bz2 gcc-mingw-3.2-20020817-1.tar.bz2 mingw-runtime-2.2-1.tar.bz2 w32api-2.0-1.tar.bz2
ソースはbinutilsとgccだけ。
prefixは/usr/local/cygwinとする。 念のため今までの環境はrenameして取っておく。
% mv /usr/local/cygwin{,-1.3.12} % prefix=/usr/local/cygwin % mkdir -p $prefix/i686-pc-cygwin % tar xfv cygwin-1.3.13-2.tar.bz2 --us=bzip2 usr/{include,lib} % tar xfv mingw-runtime-2.2-1.tar.bz2 --us=bzip2 usr/{include,lib} % tar xfv w32api-2.0-1.tar.bz2 --us=bzip2 usr/{include,lib}
% tar xfv binutils-20020706-2-src.tar.bz2 --us=bzip2 % cd binutils-20020706-2 % CFLAGS=-Os ./configure --prefix=$prefix --target=i686-pc-cygwin % make % make install
% tar xfv gcc-3.2-1-src.tar.bz2 --us=bzip2 % cd gcc-3.2-1 % mkdir cygwin; cd cygwin % CFLAGS=-Os CXXFLAGS=-Os ../configure --enable-languages=c,c++ \ --enable-threads=posix --with-system-zlib --disable-nls \ --without-included-gettext --disable-shared --enable-interpreter \ --disable-sjlj-exceptions --disable-version-specific-runtime-libs \ --target=i686-pc-cygwin --enable-haifa --prefix=$prefix
一個ディレクトリを掘っておかないと i586-pc-linux-gnuというディレクトリにMakefileができてたりするので注意。 buffer overrunは直ってないようなので、gcc/config/i386/cygwin.hは適当に +10しとこう。
% make % make install
% mkdir -p $prefix/i686-pc-mingw32 % cd $prefix/i686-pc-mingw32 % ln -s ../i686-pc-cygwin/bin . % ln -s ../i686-pc-cygwin/include/mingw include % ln -s ../i686-pc-cygwin/lib/mingw lib % cd ~-/../.. % tar xfO gcc-mingw-3.2-20020817-1.tar.bz2 --us=bzip2 \ etc/postinstall/gcc-mingw-3.2-20020817-1.tar | \ tar xfv - -C $prefix % cd $prefix/lib/gcc-lib/i686-pc-mingw32/3.2 % ln -s ../../i686-pc-cygwin/3.2/{cc1,cc1plus,cpp0,tradcpp0,collect2} . % rm *.exe
以上でok。あとは/usr/local/cygwin/binにpathを通しておく。