〜2001年11月中旬〜
心持ち速くなった気がする。
更新。
--enable-c-mbcharなんだけど、これって全然使いものにならない気がする。 というか、LANG=ja_JP.eucJPという設定でもリテラルなEUC-JPな文字列も化ける。 w3mをmakeし直して気づいた。
-Sしてみるとすでに全然違う文字列だもんなあ。
% echo 'char *foo = "あいうえお";' |gcc -xc - -S -o - |grep string .string "BDFHJ"
第2バイト目の最上位ビットを寝かせてるものかと思ったら-0x60してある感じだ。
gcc的にはsourceを見るとLANG=C-EUCJPのようだが、これでも化ける。 第2バイト目だけ拾ってる感じだ。
% echo 'char *foo = "あいうえお";' |LANG=C-EUCJP gcc -xc - -S -o - \ |grep string .string "\242\244\246\250\252"
実際とは違うLANGにするとwarningにはなるが、そのまま出力される。 こうなって欲しいんだけどなあ。
% echo 'char *foo = "あいうえお";' |LANG=C gcc -xc - -S -o - |grep string <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character <stdin>:1: warning: Ignoring invalid multibyte character .string "\244\242\244\244\244\246\244\250\244\252"
--enable-c-mbcharをやめるとちゃんと出力される。
% echo 'char *foo = "あいうえお";' |gcc -xc - -S -o - |grep string .string "\244\242\244\244\244\246\244\250\244\252"
どうもモーニング娘。の動きにはついていけてないようだ。 バックの格子模様電飾の所為かもしれんが。
off-line時に引けるのと引けないのとあるんだけど、これは何の違いだろう?
% host -a homepage1.nifty.com Trying null domain Trying domain "" Host not found, try again. % host -a www.ruby-lang.org Trying null domain rcode = 0 (Success), ancount=1 The following answer is not authoritative: The following answer is not verified as authentic by the server: www.ruby-lang.org 49128 IN CNAME helium.ruby-lang.org rcode = 0 (Success), ancount=1 The following answer is not authoritative: The following answer is not verified as authentic by the server: helium.ruby-lang.org 49128 IN A 210.251.121.214
on-line時に引いてみればいいのか。なるほどTTLが短いわけね。
% host -a homepage1.nifty.com Trying null domain rcode = 0 (Success), ancount=1 The following answer is not authoritative: The following answer is not verified as authentic by the server: homepage1.nifty.com 3600 IN A 202.219.63.7
off-lineにしてちょっと経ってからやってみると減ってる。
% host -a homepage1.nifty.com Trying null domain rcode = 0 (Success), ancount=1 The following answer is not authoritative: The following answer is not verified as authentic by the server: homepage1.nifty.com 3159 IN A 202.219.63.7
で、3600秒経つと最初に戻るわけね。たしかにwww.ruby-lang.orgはでかい。
で、w3mもその影響でなぜかタイムアウト待ちするようになった。 ltraceしてみるとgethostbyname("homepage1.nifty.com")で待ってる。 proxyでwwwoffleが動いてるlocalhostを指定してるのになぜそれを引きに行くかな?
grepしてみてわかった。 no_proxyでもip addressで指定できるからgethostbynameする必要があるわけか。 で、ちゃんとそれを殺す指定もあった。oして
ネットワークアドレスでプロキシ除外のチェック ( )ON (*)OFF
てな感じだ。OFFにしたらokだ。
昨日のw3mのmakeし直しってのはこのあたりをいろいろいじってた。
出たね。一日使ってみたけど特に問題はないようだ。
日刊化してる。今は手を出さないほうがよさそう。 といいつつ、使っているが。
cvs upしてみると、CC='gcc -mno-cygwin'してるのになぜか
checking for gcc... gcc
と表示される。何が変わったかdiffを取ってみる。
% cvs diff -u1 -r1.68.2.1{8,9} configure.in Index: configure.in =================================================================== RCS file: /src/ruby/configure.in,v retrieving revision 1.68.2.18 retrieving revision 1.68.2.19 diff -u -1 -r1.68.2.18 -r1.68.2.19 --- configure.in 7 Nov 2001 09:01:30 -0000 1.68.2.18 +++ configure.in 13 Nov 2001 08:22:26 -0000 1.68.2.19 @@ -19,3 +19,5 @@ without_gcc=$withval;; - esac], [without_gcc=no]) + esac], [ + CC=gcc + without_gcc=no]) dnl If the user switches compilers, we can't believe the cache
このCC=gccが犯人か。
: ${CC=gcc}
としとこう。
つうわけでln -sしてみた。
%Rubyでもちらっと先週ぼやいてみたが、 Linuxではsonameがlibruby.so.1.6なため、 過去のバージョンであるlibruby.so.1.6.{1,2,3,4}はゴミとなる。 FreeBSDはlibruby.so.16だし、libruby.so.1.6でも十分なのだが、 結構ちょっと前のバージョンの挙動を見たくなるときもあるし、 せっかく残ってるんだから活用したいでしょ、やっぱ。 バグ報告の内容を再現させるときとか便利だと思うし。 というか、ずらーっとruby 1.0から並べてみるのもいい。
で、結局makefileを用意して
include Makefile DLDFLAGS = -Wl,-soname,lib$(RUBY_INSTALL_NAME).so.$(MAJOR).$(MINOR).$(TEENY) install-link: install ln -f $(DESTDIR)$(prefix)/bin/$(PROGRAM) \ $(DESTDIR)$(prefix)/bin/$(PROGRAM)-$(MAJOR).$(MINOR).$(TEENY)
とすることにした。このmakefileはconfigureを実行するスクリプトに仕込んどく。 mkmf.rbとかそういうのはこの際考えないことにする。
もう-acは出ないので2.2.15-pre4を試す。 が、いきなりエラーを喰らう。
setup.c: In function `c_start': setup.c:2791: subscripted value is neither array nor pointer setup.c:2792: warning: control reaches end of non-void function
実際のコードは
static void *c_start(struct seq_file *m, loff_t *pos) { return *pos < NR_CPUS ? &cpu_data[*pos] : NULL; }
で&cpu_data[*pos]が怪しい。 grep -w cpu_data include/**/*.hしてみるとinclude/asm-i386/processor.hにある。
extern struct cpuinfo_x86 boot_cpu_data; extern struct tss_struct init_tss[NR_CPUS]; #ifdef CONFIG_SMP extern struct cpuinfo_x86 cpu_data[]; #define current_cpu_data cpu_data[smp_processor_id()] #else #define cpu_data &boot_cpu_data #define current_cpu_data boot_cpu_data #endif
なるほど。これが原因か。()がないのがまずいね。
#define cpu_data (&boot_cpu_data)
としてmakeし直し。って全部かよ。
結局gcc 3.0.xでコンパイルしたkernelだと動かない。 それはそれとして、まだ2週間しか経ってないのに
Your evaluation serial number will expire in 2 day(s).
とはどういうことだ?30日じゃなかったの?
デフォルトはカテゴリーごとに表示されるようになった。 ちょっと面喰らった。
ALSAからkernel付属のOSS/Freeに変えたら、音が途切れなくなった。 いちいちalsa-driverを別にmakeするのも面倒になったので、 OSS/Freeでいいや。
ruby-talkに出てきたので久し振りに更新しようと思ったら、かなり変更されてる。 もう簡単にはクロスでmakeできない。
今回は何の問題もなくmakeできた。
予告通りに切れた。 登録したメールアドレスとパスワードでそのまま進めると、 また新しいserial numberが送られてきた。太っ腹だな。
24人の阿藤海。そうか加藤あいとはアナグラムの関係か。 って改名しちゃったよ。阿藤快。
最近また配送の乱れが目立つ。 headerを見るとrimまではさくっと来てるから、rim内のトラブルか?
爆発してると思ったら逆流してるらしい。Postedを見ると6月とか7月の記事だ。 すでにnews gatewayは止まっているが、 たぶん日付でfilteringすることになるんだろう。
面白そう。始めたのがEarnie Boydだから期待できる。
libruby.aじゃだめだめだよね。 で、 Andyさんへの返事 も間違っていたことがわかった。
% ln -s ../bin/cygwin-ruby16.dll libcygwin-ruby16.a
だと、 [ruby-dev:15175] にあるようにundefined referenceになってしまう。ここは [ruby-dev:15183] に書いたように
% ln -s ../bin/cygwin-ruby16.dll .
とするか、これだとあまりlibraryらしくないので
% ln -s ../bin/cygwin-ruby16.dll libcygwin-ruby16.dll.a
とする必要がある。tarballはこっちにしよう。
あ、すっかり忘れてたが、出てたのか。あまり盛り上がってない気も。
glibcの所為だとばかり思っていた XMMSの音の途切れの原因がALSAだった ようで、じゃ最新のALSAはどうなんだろうと0.9.0beta9のbeta版を使ってみることにした。
だめだ。make installするとdepmod -aのとこでなにをやってるのかわからんが、 返ってこない。というかmodutilsが古くないか?
% insmod -V |& head -1 insmod version 2.3.23
全然古いよ。おかしいな。Linux 2.4.xに挑戦するときに上げたはずなんだが。 あ、それは古い環境か。
% /old/sbin/insmod -V |& head -1 insmod version 2.4.6
やっぱり。
modutils 2.4.11をインストールしたら、するっとdepmod -aもokだ。
でもconfigいまいちよくわからない。やっぱOSS/Freeでいいや。
更新。
だめじゃん。おかしいなあ。金曜日に試したときはうまくいったと思ったのに、 また、undefined referenceだ。やっぱ
% ln -s ../bin/cygwin-ruby16.dll .
にしとこう。あ、でもlibcygwin-ruby16.dll.aとか残ってしまうなあ。 順番はどうなっているかというと、
% i686-pc-cygwin-gcc -L. -lfoo -Wl,--verbose
を実行するとわかる。
attempt to open ./libfoo.dll.a failed attempt to open ./foo.dll.a failed attempt to open ./libfoo.a failed attempt to open ./cygfoo.dll failed attempt to open ./libfoo.dll failed attempt to open ./foo.dll failed attempt to open ./libfoo.a failed
という感じ *1。 つまり、libcygwin-ruby16.dll.aが真っ先に優先される。 symlinkじゃなくてちゃんとimport libraryを用意することにしよう。
どうしてこううまくいかないんだろうね。 -bmingwをつけるとgccは.dll.aを探さなくなる。 と思ったらbinutilsが古い所為か? cygwin-1.3.5-3, binutils-20011002-1, gcc-2.95.3-5で作り直したらちゃんと探すようになった。 実はone treeにしたらなんか面倒なことになったんだが、 それはまた別の日にでも書こう。
というわけで今日から最新になるのでよろしく。 cygwin 1.1.8のcygwin1.dllではもう動かない。
cygwin1-1.1.8-2関係は消しとこう。