〜2003年4月下旬〜
そりゃもういっぱい
warning: parenthesize argument(s) for future version
が出てるわけなんだよね。これをなくすのは簡単で()を適当につければいい。 ただ困ったのは
print(eval %-eval %: %|Just another Ruby hacker,| :-)
だ。これに()をつけると
print(eval(%-eval %: %|Just another Ruby hacker,| :-))
となる。これじゃ台無し。でもよく見るとprintの()はなくてもいい。
print eval(%-eval %: %|Just another Ruby hacker,| :-)
おぉ、これでいいのか。
Array#selectの話は実はJARHのwarningをなくす過程で見つけた問題であった。これができないと
$><<'RbyckJust another,'.split('').select(5..16,9,0,6,1,2,9,14,10,3,4,15..17)
は
$><<'RbyckJust another,'.split('').select(5,6,7,8,9,10,11,12,13,14,15,16,9,0,6,1,2,9,14,10,3,4,15,16,17)
としないといけなくなる。 ま、元々そんなにいい出来でもないので、なくしちゃってもいいんだけど。
これも仕様が変わった。
% ruby-1.7.2 -e 'p *1..1' 1 % ruby-1.8.0 -e 'p *1..1' 1..1
JARHには
print *"Just another Ruby hacker,".."Just another Ruby hacker,"
というのがある。どうしようかなあ。
print *("Just another Ruby hacker,".."Just another Ruby hacker,").to_a
としてみよう。*をつけないと1.6ではprintの()とみなされる。
Happy Hacking Keyboard LiteのUS配列。 会社では10年程前のAXキーボードのUS配列。 根がNEWSなもんだからUS配列じゃないとだめなのだ。 106/109でもUS配列に変更して使う。
なぜかgetできないなあ。
うささん協力の下、MinGW, VC++, BCC32用のバイナリを用意した。 次はzlibの予定。
更新。
Makefileを分割してみた。
70000を越えた。60000からは4ヶ月。ちょっとペースが落ちたな。
md5sumのチェックって結構うっとうしい。setup -5でチェックしなくなるようだ。
更新。
3.2.2と全く同じオプション。
% CFLAGS=-Os CXXFLAGS=-Os CC=/usr/bin/gcc ../configure \ --enable-languages=c,c++ --with-system-zlib \ --enable-sjlj-exceptions --enable-threads \ --disable-version-specific-runtime-libs --disable-nls \ --without-included-gettext --without-catgets % make BOOT_CFLAGS=-Os STAGE1_CFLAGS=-Os CFLAGS=-Os \ DEBUG_FLAGS= CONFIG_CXXFLAGS='-ffunction-sections -fdata-sections' \ bootstrap
print begin "Just another Ruby hacker," end
問題なし。
zオプションの存在に気づく。
% echo hogehoge | od -tx1z 0000000 68 6f 67 65 68 6f 67 65 0a >hogehoge.< 0000011
Rsync 2.5.6ででGCC 3.2.3を試していたら
/usr/local/lib/libgcc_s.so.1(*IND*+0x0): multiple definition of `__divdi3@GLIBC_2.0' /lib/libc.so.6(.text+0x4ce): first defined here
と言われてしまった。が、これはどっちかというとGLIBCの問題のようだ。 確認のためにCC='gcc -V 3.2.2'でconfigureしても同じ。 つまり、いつのまにかまずいことになっていたが、気づかなかったらしい。
あ、でも以前GCCを作ったときに--enable-version-specific-runtime-libsを指定していたつけが今頃になって回ってきたとも言えるか。 とりあえず、rsyncはpoptが原因なので、 poptを再インストールしよう。 最終的には/usr/local/lib/libgcc_s.so.1を消せるところまで持って行こう。
pcreも新しくしたので、grep 2.5をGCC 3.2.3でmakeする。 じゃなくて最新はgrep 2.5.1だった。 マルチバイト対応は lvのlgrepのほうが便利なので、最初から殺しておこう。
% ac_cv_type_mbstate_t=no \ ac_cv_header_wchar_h=no \ ac_cv_header_wctype_h=no \ CFLAGS=-Os \ ./configure --disable-nls % make all check
だめだ。backrefのテストが返ってこない。spencer1.shもfailしてる。 tests/backref.shの
% echo civic | \ grep -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1$'
というテストがだめのようだ。数を5個までに減らすとok。わからん。 configure時の
configure: WARNING: Included lib/regex.c not used
が気になるので、--with-included-regexでconfigureしてmakeし直してみる。 今度はmake checkも通った。GLIBCのregexは怪しいってことか?
gd 1.8.4をCygwinでmakeすると
gd_jpeg.c:348: structure has no member named `progressive_mode'
となるんだが、googleで検索すると ここしかヒットしない、でも日本語はわからん、助けてくれというメールが英国から。 まったく、だれでも英語が読めると思っているところがいつも気に入らないというか、 しかもHTMLメールだったから例によってspamフォルダに行きそうになったんだけど、 その2年前の日記を見ても1.8.4なわけで、最新のgdを使えよとツッコんでみた。 ツッコむ以上は裏を取っとかないといけないわけで、 GDのWeb pageでgd-2.0.12.tar.gzを取ってきて、ふつうにconfigureしてふつうにmakeすると、 ふつうに通るじゃん。 この人はいったいなんだってそんな古いものをわざわざmakeしたいんだか。
ま、原因はgd-2.0.12のソースを見るとわかるんだけど、
/* REMOVED by TBB 2/12/01. This field of the structure is documented as private, and sure enough it's gone in the latest libjpeg, replaced by something else. Unfortunately there is still no right way to find out if the file was progressive or not; just declare your intent before you write one by calling gdImageInterlace(im, 1) yourself. After all, we're not really supposed to rework JPEGs and write them out again anyway. Lossy compression, remember? */ #if 0 gdImageInterlace (im, cinfo.progressive_mode != 0); #endif
ということらしい。つまり1.8.4を使いたいなら、コメントアウトしてくれ。
先週の木曜深夜にぼーっと見た「池袋ウエストゲートパーク」の再放送にはまり、1, 2巻を借りてきた。 これは面白い。今季のドラマは全部つまらないのでちょうどいい。
トリプルXも借りた。007だった。ま、それなりに楽しんだ。
1.8ではmswin32/mingw32/bccwin32でも使えるようになってます。 こういうのもshim化すべきなんだろうか?
VAIO noteのWin2kが突然再起動を繰り返すようになった。 Windows 2000 Professionalのロゴを表示し、 プログレスバーがいっぱいになり背景が青くなったところで暗転、 なにかメッセージを表示して突然再起動。これの繰り返しだ。 メッセージは一瞬で消えてしまう。目をこらして何度か見ることでやっと
STOP: c000021a Unknown Hard Error Unknown: Hard Error
と表示していることがわかった。 とりあえずSTOP Unknown Hard Errorでぐぐると結構ヒットする。 ま、要するに再インストールするしかないんだけど、原因は これを見ると情けなくなる。
さて10連休最中の今日、CD-ROMドライブは会社だし、フロッピードライブもないし、 どうやって起動させよう。 一応別パーティションにはNetBSD 1.5がインストールされているので、 ただの箱にはならないんだが、 むしろここはつぶして何か別のOSをインストールしようと思っていただけにいじる気にならない。
BIOSにはネットワークブートに関する設定はなにもない。残念。
/\n$/の昔の挙動を確認するためにRuby 1.0をmakeしてみた。 strdupなどの宣言を削除すれば比較的すんなりと通ったが、 parse.yだけはbison 1.875ではbison自身がSEGVになってしまった。 しかたなくbyaccを使う。
% ruby-1.0 -ve 'p "\n" =~ /\n$/' ruby - version 1.0-971225 (i386-linux) 0 % ruby -ve 'p "\n" =~ /\n$/' ruby 1.8.0 (2003-04-27) [i386-linux] nil
そういえば$:も今と違って簡単だったよなあ。
% ruby-1.0 -e 'puts $:' -e:1: NameError: undefined method `puts' for main(Object)
あ、putsもなかったんだ。
% ruby-1.0 -e 'p $:' [".", "/usr/local/lib/ruby", "/usr/local/lib/ruby/i386-linux"]
どうもこの3つには同じモノを感じるというかなんというか、 なにか共通するものがあるのか調べてみると、 演出がすべて堤幸彦という人だった。 IWGPには、はまるべくしてはまったわけか。
買ってみた。ちゃんと起動するのを確認して満足した。
makeしてたら
/usr/lib/libtiff.a(tif_print.o): In function `_TIFFprintAscii': tif_print.o(.text+0x135c): undefined reference to `__ctype_b'
と言われてしまったので、tiffをインストールし直そう。 libtiffから3.5.7を取ってきてふつうにインストール。問題なし。 make installするとなぜかPerlMagickを作り始めてまた__ctype_b問題が。 というわけで今度はPerl 5.8.0だ。
PerlをConfigureするとcshがSEGVになることがわかった。 結構前から気づいてたんだけど、 まったく支障がないので放っといた。この機会にtcshも更新しよう。 最近は/sbinと/binに入れるものは全部staticにしてしまえ主義なので、 uClibcでmake。
% CFLAGS=-Os CC='/usr/i386-linux-uclibc/usr/bin/gcc -static' \ ./configure --prefix=/usr --bindir=/bin % vi config.h config_f.h
NLS_CATALOGSはうっとうしいだけなのでundef(SEGVの原因が実はこれ)、 NLSも要らないのでundef、KANJIとDSPMBYTEはdefineに変更してmake。
% make % sudo make install
やっとPerlだ。
% ./configure.gnu -Dcc=gcc -Dccflags=-DDEBUGGING % make all test % make install
jcode.rbの件でメールを出したが、全然返って来ない。 あれ?そういえばメールそのものがどこからも来ないなあ。 調べてみるとトラブってるらしい。
結局丁度死んだときにメールを出してしまったのか。 2時間程で復旧。
% make install <...> Magick.o: In function `GetList': Magick.o(.text+0x16e): undefined reference to `CatchException' <...>
全然だめじゃん。 ひょっとしてインストールされてる古いライブラリが邪魔してるのかな。 念のためrm /usr/local/lib/libMagick*してみる。いけた。そういうことか。 つまりmake uninstallしてからmake installしたほうがよさそうだな。
それにしてもmake installしなきゃmake checkできない仕様は変だぞ。