〜2003年7月上旬〜
1297通。先月と同じぐらい。
gmon-start.cをコンパイルするところでstddef.hが見つからないと言われる。 何を実行してるのかじっと見てみると
-I/usr/local/lib/gcc-lib/i586-pc-linuxnu/3.3/include
という謎の指定を発見。 i586-pc-linux-gnuのはずなんだけど、-gはいずこへ? libc/sysdeps/linux/i386/Makefileを見てみると
ifeq ($(strip $(UCLIBC_PROFILING)),y) SAFECFLAGS := $(subst -g,,$(CFLAGS)) gmon-start.S: ../common/gmon-start.c $(CC) $(SAFECFLAGS) -c $< -S -o $*.S gcrt1.o: $(CRT0_DEPS) endif
となってた。これか。
SAFECFLAGS := $(subst -g ,,$(CFLAGS))
としとこう。
strerror()が"\n"を追加して返してくる。やめてくれー。
なんかとってもいやな仕様のmakeだが、 まあ、大文字のICONDIRSを使えば問題なく渡せるわけだし、それでいいんじゃない?
commitする前にChangeLogも書くように。 インデントも周りと合わせるように。 version.hの更新も忘れずに。 あ、あとmake testしてからcommitするように。
困ったことにCygwin版make 3.80-1のVPATHはドライブ:を認識しなくなった。 このままだとCygwin上でMinGW版Rubyをmakeすると拡張ライブラリのところでエラーになる。
たとえばMakefileに
srcdir = C:/src/ruby/ext/bigdecimal VPATH = $(srcdir)
と書かれていた場合、 make 3.79.1-7ではcygpath -u相当の処理が入っていたので問題なかったんだが、 make 3.80-1でunix modeのときはその処理が入らなくなった。 字面通りCと/src/ruby/ext/bigdecimalの2つのパスとみなされるので、 ソースファイルが見つからないというエラーになる。
SHELL = /bin/shを削除すればwin32 modeでも動くことがわかったので、 拡張ライブラリだけwin32 modeでmakeを起動すればよさそう。 build_osがCygwinのときという判断も必要か。
ad hocな実験。これでうまくいくか明日試そう。
Index: ext/extmk.rb =================================================================== RCS file: /src/ruby/ext/extmk.rb,v retrieving revision 1.34 diff -u -1 -r1.34 extmk.rb --- ext/extmk.rb 24 Apr 2003 10:49:57 -0000 1.34 +++ ext/extmk.rb 2 Jul 2003 16:15:40 -0000 @@ -140,2 +140,6 @@ $make, *rest = Shellwords.shellwords($make) + if $mingw and CONFIG["build_os"] == "cygwin" + $mflags.delete("--unix") + $mflags.unshift("--win32") + end $mflags.unshift(*rest) unless rest.empty? @@ -274,2 +278,5 @@ +if $mingw and CONFIG["build_os"] == "cygwin" + $mflags.delete("--win32") +end system($make, *sysquote($mflags)) or exit($?.exitstatus) Index: lib/mkmf.rb =================================================================== RCS file: /src/ruby/lib/mkmf.rb,v retrieving revision 1.132 diff -u -1 -r1.132 mkmf.rb --- lib/mkmf.rb 25 Jun 2003 05:28:24 -0000 1.132 +++ lib/mkmf.rb 2 Jul 2003 16:15:40 -0000 @@ -539,3 +539,3 @@ mk << %{ -SHELL = /bin/sh +#{$mingw ? "" : "SHELL = /bin/sh"}
うーむ。難しい。ccとldのオプションは共通ではないから共有には無理がある。 たぶん共有したいのは-Lぐらいだから、これだけ抜き出すのはどうだろう?
まったくt.A.T.u.に触れることなく進行。 そういえばアルバムランキングを発表しなかった。 ってことはランキングに入ってるわけだ。徹底的に無視か。
info autoconfするとわかるけど
- Macro: AC_CHECK_PROG (VARIABLE, PROG-TO-CHECK-FOR, VALUE-IF-FOUND, [VALUE-IF-NOT-FOUND], [PATH], [REJECT])
なので、3番目の引数は省略不可。 AC_CHECK_PROG(RUBY, ruby, ruby)としないとだめです。
Large file対応になるのはいいとして、やっぱ1.4を飛ばして1.5か。
Windows Updateで更新。特に問題なし。
cURLをupdateすると、ssl機能が死んでいることに後で気づく。 configure時になぜ見つけてくれないのか注意して見てみると
checking for OpenSSL options using pkg-config... no
とあった。pkg-configを使ってるのか。 pkg-config --list-allしてみるとたしかにOpenSSLは出てこない。 locate openssl.pcしてみると/usr/local/ssl/lib/pkgconfigにあった。 なるほど。prefixが違うからこうなるわけね。
ln -s /usr/local/{ssl/,}lib/pkgconfig/openssl.pc
としとこう。cURL的には--with-ssl=/usr/local/sslでもいいんだけどね。
さてcmailでS/MIMEを送るにはどうすればいいのか? SEMIにはsmime.elがあるのでこれでできそうだけど、 smimeというコマンドを呼ぶようだ。なにそれ? これか?consが必要だと言わちゃったよ。
consはPerlスクリプトで/usr/local/binにコピーすればok。 cons smimeしてみると
keygen.c: In function `add_attribute_object': keygen.c:165: structure has no member named `set' keygen.c: In function `keygen': keygen.c:336: structure has no member named `req_kludge'
というエラーに。全然更新されてないし、最近のOpenSSLには対応してないようだな。 setはsingleでよさそう。req_kludgeは他に使ってないから削除してもいいだろう。 これでコンパイルは警告だらけだが一応通った。 でもリンクでMalloc,Free,Reallocがundefinedに。 単純に小文字にすればよさそうだけど、 不思議なことに小文字のmallocやreallocも存在してたりで、 よくわからん。
更新。
いちいちspamに反応するなよ。
とりあえず復号して検証すれば読めることはわかった。
% openssl smime -decrypt -in mail.txt \ -recip eban@os.rim.or.jp.crt -inkey keypair.pem | \ openssl smime -verify -CApath ~/.certs
Gnus用のsmime.elはopensslコマンドを使うようだ。
今頃になって1.8.0 preview3のバグ報告が山のようにやってきた。 preview3が出てからもう2週間以上経つのにね。 このくらい待たないと駄目ってことか。
text mountしてるとconfig.statusがCR+LFになって、
srcdir=.^M
となっていると推察。mount -f -t -uでremountして見ると再現した。 面倒なのでmkconfig.rbでString#stripしちゃおう。
Cygwin 1.5.0になったら、nanがダミーの引数を取るようになった。 というわけで、math.cは
#if defined __CYGWIN__ # include <cygwin/version.h> # if CYGWIN_VERSION_DLL_MAJOR < 1005 # define nan(x) nan() # endif # define log(x) ((x) < 0.0 ? nan("") : log(x)) # define log10(x) ((x) < 0.0 ? nan("") : log10(x)) #endif
とした。