Just another Ruby porter,

〜2001年6月中旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2001-06-11 (Mon)

RUBY_CANONICAL_BUILD

結局RUBY_CANONICAL_BUILDを作った。 autoconf 2.50の場合、

AC_CANONICAL_TARGET
AC_CANONICAL_HOST
AC_CANONICAL_BUILD

AC_CANONICAL_SYSTEM

とほとんど同じなので、 --targetを指定したら--program-prifix=''も忘れずに。

1.7.xはこんな小細工はやめてAC_CANONICAL_SYSTEMにしちゃおう。

フローラン・ダバディー(日本代表監督トルシエのパーソナルアシスタント)

そんな肩書を持ってたのか。


2001-06-12 (Tue)

ruby-talk

分離の影響か先月の半分ぐらいの流量になってる。

[Cygwin] setup.exe

なにげなくCygwinのsetup.exeのソースを見てたら、 tar.bz2もサポートしてることがわかった。 そういえば以前tar.gzだとWinzipで展開する人が多いから *1、 tar.bz2にしよっかななんてChrisがCygwin MLで言ってたような。


*1: symlinkを考えるとCygwinのtarを使わないとまずい。

rubywin 0.0.3.2

すっかり忘れてた。更新。


2001-06-13 (Wed)

[Cygwin] automode.o

/lib/automode.oをリンクするとmountのモードに関わらずに

入力側はtext mode
出力側はbinary tmode

になる。pdkshにこれをリンクしてみたがいい感じ。 ソースに手を入れずにこれですめば実にお手軽。


2001-06-14 (Thu)

wget 1.7.0

SSL supportが入ったので使ってみたくなる。

% ./configure --with-ssl=/usr/local/ssl
<前略>
Looking for SSL libraries in /usr/local/ssl
checking for RSA_new in -lcrypto... no
checking for SSL_new in -lssl... no

WARNING: Failed to link with OpenSSL libraries in /usr/local/ssl/lib.
         Wget will be built without support for https://... URLs.
<後略>

となぜか見つけてくれない。ちゃんとあるのに。

% ls -l /usr/local/ssl/lib
 total 1610
 -rw-r--r--   1 watanabe ruby      1386494 Dec  6  2000 libcrypto.a
 -rw-r--r--   1 watanabe ruby       252990 Dec  6  2000 libssl.a

あ、shared library作ってないな。あとで作っとこう。 それはそれとして、こういうときはconfig.logを見て原因を探る。

configure:4019: gcc -o conftest -Os  -L/usr/local/ssl/lib \
    -rpath /usr/local/ssl/lib  conftest.c  1>&5
gcc: unrecognized option `-rpath'
/usr/local/ssl/lib: file not recognized: Is a directory

あきらかに-rpathがまずい。なんでこんなオプション使っているのかな? -rpathはldのオプションだから、gccから指定するならこうだ。

-Wl,-rpath

とりあえずLinuxの場合だけこうしてみた。

--- configure.in.orig	Tue May 29 07:02:47 2001
+++ configure.in	Thu Jun 14 22:50:55 2001
@@ -207,3 +207,4 @@
   sol2 ) dash_r="-R" ;;
-  decosf* | linux* | irix*) dash_r="-rpath " ;;
+  decosf* | irix*) dash_r="-rpath " ;;
+  linux*) dash_r="-Wl,-rpath " ;;
   *)

これでautoconfして、もう一度configureし直し。

% ./configure --with-ssl=/usr/local/ssl
<前略>
Looking for SSL libraries in /usr/local/ssl
checking for RSA_new in -lcrypto... yes
checking for SSL_new in -lssl... yes
checking whether SSL libs are resolved at runtime... yes
<後略>

いいみたい。

OpenSSL 0.9.6

Quick Startの通りに実行するとshared libraryを作ってくれないので、 INSTALLをちゃんと読む。すぐにsharedを引数に指定すればいいとわかる。

% ./config shared
% make
% make test
% sudo make install

-rpathまでするアプリケーションは少ないから/etc/ld.so.confに登録。

% sudo vi /etc/ld.so.conf
% sudo ldconfig

2001-06-15 (Fri)

wget 1.7.0

できたはいいが、どうもよくわからない。

% wget --proxy=off -s \
  --http-user=username --http-passwd=password \
  https://iw.nifty.com/iw/nifty/iwforum/index.html
--21:34:16--  https://iw.nifty.com/iw/nifty/iwforum/index.html
           => `index.html'
Connecting to iw.nifty.com:443... connected!

Unable to establish SSL connection.

Unable to establish SSL connection.

となってしまう。-dを追加しても

DEBUG output created by Wget 1.7 on linux-gnu.

parseurl ("https://iw.nifty.com/iw/nifty/iwforum/index.html") -> \
host iw.nifty.com -> opath iw/nifty/iwforum/index.html -> \
dir iw/nifty/iwforum -> file index.html -> ndir iw/nifty/iwforum
newpath: /iw/nifty/iwforum/index.html

が増えるだけであまり役に立つ情報でもない。うーむ。


2001-06-16 (Sat)

Compilercache

_ なにこれ?:

コンパイルした結果をcacheしてくれるというソフトなんだけど、 一体何の役に立つかというと

  1. configureしなおしたりした時とか

  2. 一時的にオプションを変えてmakeして戻すときとか

こんな場合に素早くmakeが終わる。 特に遅いマシンを使ってるおいらにはうってつけだ。 ディスクも比較的いっぱい余ってるし。

_ 試す:

タイムスタンプを見てるわけではないので、 touchだけだとcacheから取ってくる。

% echo 'main(){}' >main.c
% gcc -c main.c
(compiling into cache)
% touch main.c
% gcc -c main.c
(getting result from cache)

必ずメッセージが出るあたりが気に入らないが、 そのあたりはshell scriptなので何とでもなる。

_ md5sum:

タイムスタンプじゃないとすると、 一体何を基準にコンパイルするしないを判断しているのか? bin/compilercacheを見ると、 gcc -Eの結果とgcc -vの結果と一部のコマンドライン引数をファイルにして、 md5sumを取っている。

main
(
)
{
}
Reading specs from /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)
IDENTARGS=
COMP=gcc
INPUTNAME=main.c

で、hash値をファイル名にしてmain.oの内容をcacheするわけだ。 あとはcacheディレクトリに同じhash値のものがあればそれをコピーする。 いやあ、面白いなあ。
オプションをつければIDENTARGSが変化するのでhash値も変わる。 COMPも残してるからちょっとした変更でクロスコンパイラにも対応可能だ。


2001-06-17 (Sun)

Mail/news gateway

結局鈴木さんと連絡が取れなくて、Daveさんが作ってしまったらしい。 なんかやたらとテストメールが目立ったがそういうことだったか。

[Cygwin] tar.bz2

先日 書いたが、すでにtar.bz2になってるのもあるね。 rsync,fileutils,textutilsはもうtar.bz2だ。 それにしてもCygwinってもう何でもあるなあ。 fileutilsのcpはinstallと同じように

% cp foo /bin

でfoo.exeがあればコピーされるようになったようだ。

Compilercache

PATHとかdebug messageのyes/noは~/.compilercachercで設定する。 今はこんな感じにしてる。

COMPILERCACHEBINDIR=$HOME/compilercache-1.0.9/bin
PATH=/usr/local/bin:/usr/local/cygwin/bin:/usr/bin:/bin
COMPILERPATH=$PATH
SHALLDEBUG=no

~/.zshrcでPATHに HOME/compilercache-1.0.9/binも加えてある。 でもこのままだとgcc,cc,g++,c++以外はエラーになってしまうので、 もうちょっと ゆるく してみた。 あとはgccと同じようにbinにsymlinkを張っとけばok。


2001-06-18 (Mon)

[Cygwin] gcc-2.95.3-5

巷ではGCC 3.0がどーのこーのと騒がれているが、 (てゆうかもう出たの?)Cygwinのほうではgcc-2.95.3-5が出た。 例によってtar.bz2だ。もう完璧に切り替えてきたね。

[Cygwin] setup.ini

setup 2.57になってからsetup.iniも一緒にダウンロードしとかないと、 パッケージを選ぶときに困る。バグか?


2001-06-19 (Tue)

GCC 3.0

ちゃんと出てるじゃん。
適当に見繕ってconfigure。

% CFLAGS=-Os CXXFLAGS=-Os ../configure --enable-languages=c,c++ \
  --enable-shared --with-system-zlib --enable-sjlj-exceptions \
  --enable-version-specific-runtime-libs --enable-c-mbchar \
  --enable-threads

rubyのgc.c

GCC 3.0にしたらgc.cの__asm__のとこがwarningになったので修正。

% cat foo.c
char *s = "foo
bar";
% gcc -V 2.95.3 -c foo.c
% gcc -V 3.0 -c foo.c          
foo.c:1:11: warning: multi-line string literals are deprecated

とgcc 2.95.3だとwarningにならない。


2001-06-20 (Wed)

Compilercache

真っ先にdebug messageを止めたのには実は理由がある。 configure時に困るのだ。 autoconfはC preprocessorのチェック時に、 標準エラー出力に何か出力されるとエラーとみなす。 最終的に全部失敗するとしかたなくCPP=/lib/cppとして先に進む。 nativeならこれでもほとんど問題ないがcrossのときはまずい。 余計なmessageを出されると困るわけだ。

そういった意味では

SHALLDEBUG="yes"

ではなくて

: ${SHALLDEBUG:="no"}

となっていたほうがいいかも。これなら確認したいときは

% SHALLDEBUG=yes gcc -c foo.c

とすればいいんだから。

[Cygwin] WSAEINPROGRESS

原因不明のCygwin版のsocketに関するエラーは こういうこと らしい。 Windows 2000だからというより、 Windows 2000が動いているようなマシンはそれなりに速いというのが真相だな。 うちじゃ起きないわけだよ。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!