Just another Ruby porter,

〜2001年11月下旬〜


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

2001-11-21 (Wed)

w3m

oして

q での終了時に確認する                             ( )ON  (*)OFF

を調べるべし。~/.w3m/config的にはconfirm_qqの値。

Linux 2.4.15-pre8

更新。

[ruby-talk:25952]

比較的大きいRUBY NEWSGROUP FAQにreplyし、しかも全文引用すると、 結局自分の首を絞めることになると思うが。というかなぜ当該する記事にreplyしない? 繰り返されてるとするとbodyを送ってる途中でtimeoutしてるとか?

最近やっぱ配送が乱れてるなあ。今回の原因はrimじゃないようだ。 heliumでmailqするとまだ残ってたりするし。何が原因だろう?

irbsh

あ、Daveさんがirbshを使ってる。

Hello World considered harmful

どうも反応を見てるとまじめに考える人が多い。jokeだよ。

cygwin 1.1.8

実は消してない。.htaccessで見えないようにしてるだけ。

cURL

CygwinにcURLが加わった。

__func__

fj.comp.lang.cから: C99には__func__があるらしい。

% cat > foo.c
#include <stdio.h>
const char *foo()
{
    return __func__;
}

main()
{
    printf("%s\n", foo());
}
% gcc foo.c
% ./a.out
foo

なるほど。


2001-11-22 (Thu)

配送の乱れ

[ruby-list:32475] [ruby-list:32476] の2つが今日になってやっと来た。 Daveさんのjokeでしたメールも昼になってからだったし。うーむ。

Dynamic DNS from DHCP

tinydnsとDHCP 3.0でDynamic DNSしたい場合はどうすればいいんだろう? googleでtinydns dynamic dns dhcpをキーに引いてみると Dynamic DNS from DHCP が見つかった。

うーむ。単にdhcpd.leasesを見張ってるだけなのか。

bzimage.org

testingのincrementalなpatchも用意し始めたようだ。 ここ にある。

INSTALL_PATHとINSTALL_MOD_PATH

非力なmachineの代わりに高速なmachineでkernelをmakeしたいってことはよくある話だ。 できあがったらmoduleと共にtarballにしたくなるよね。 Makefileを見るとINSTALL_PATHとINSTALL_MOD_PATHを設定すればいいようだ。

実際やってみると/sbin/liloを実行しにいくのが気に入らない。 これだとrootにならないと作れないじゃん。って失敗した画面をよく見ると

+ '[' -x /home/watanabe/bin/installkernel ']'

という感じで調べている。なるほどこれを用意しとけばなんとでもなるわけか。 早速arch/i386/boot/install.shを元に~/bin/installkernelを用意した。 単に

if [ -x ~/bin/installkernel ]; then exec ~/bin/installkernel "$@"; fi
if [ -x /sbin/installkernel ]; then exec /sbin/installkernel "$@"; fi

if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi

をcomment outしただけ。これで

% mkdir ~/kernel
% make install modules_install \
  INSTALL_PATH=$HOME/kernel INSTALL_MOD_PATH=$HOME/kernel

と実行すれば~/kernelにインストールされるわけだ。 あとは適当にtarballを作るだけ。


2001-11-23 (Fri)

Linux 2.4.15

2.4.15は今年中に出るんだろうか?と書いたらもう出てるし。

EXTRAVERSION =-greased-turkey

ってなに?

Cygwin

VMwareのLinux上なのでまっさらな状態。 one treeにするとbinutilsもi686-pc-cygwinが外れてしまうので、 先にインストールしておく。

% tar xfv binutils-20011002-1-src.tar.bz2 --us=bzip2
% cd binutils-20011002-1
% CFLAGS=-Os ./configure --prefix=/usr/local/cygwin \
  --target=i686-pc-cygwin
% make
% make install
% cd ..

次にcygwinとgccはone treeで。

% tar xfv cygwin-1.3.5-3-src.tar.bz2 --us=bzip2
% tar xfv gcc-2.95.3-5-src.tar.bz2 --us=bzip2
% cd cygwin-1.3.5-3
% ln -s ../gcc-2.95.3-5/{gcc,libio,libstdc++} .
% mkdir obj; cd obj
% CFLAGS=-Os CXXFLAGS=-Os ../configure \
  --prefix=/usr/local/cygwin  \
  --target=i686-pc-cygwin \
  --enable-languages=c,c++
% make tooldir=/usr/local/cygwin
(snip)
In file included from .../libio/stdio/stdio.h:29,
               from .../winsup/cygwin/assert.cc:18:
.../libio/libio.h:30: _G_config.h: No such file or directory

だめじゃん。stdio.hはそこをincludeしちゃいかんだろう。 しかもここで終わらずにmingwをmakeしに行っちゃうのも変だよね。 i686-pc-cygwin/winsup/Makefileが

$(SUBDIRS):
        @if cd $@ 2>/dev/null; then \
            $(MAKE) all; \
        fi || exit 0

となってるからか。見過ごすとこだったよ。

どうも-nostdincの後の-Iが足りないようだ。古いバージョンで試す必要があるな。


2001-11-24 (Sat)

Cygwin

cygwin-1.3.2-1とgcc-2.95.3-5の組み合わせで試すと

Making version.o and winver.o
Version 1.3.5
sh: i686-pc-cygwin-gcc: command not found
i686-pc-cygwin-windres: no resources
make[2]: *** [winver_stamp] Error 1

といつものとこでこけるので、昨日のとこは無事に通っていることがわかる。 winsup/Makefile.commonが怪しいとあたりをつけ、 これだけ1.3.2-1のものと取り替えてみる。ビンゴ。 diffを取ってみると

ifeq (,${findstring $(newlib_source)/libc/include,$(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)})
newlib_include:=-I$(newlib_source)/libc/include
endif

という感じで、 $(CFLAGS) $(CXXFLAGS) $(CXX) $(CC)のいずれかになかったら追加したかったようだ。 でも、実際は-nostdinc++ -nostdincで無効になってしまうので、 必ずnewlib_includeを足す必要がある。こっちは-nostdinc++ -nostdincの後にあるので有効。

もっと簡単にしてみると

CC=gcc -I/path/to/include
ifeq (,${findstring /path/to,$(CC)})
newlib_include:=-I/path/to/include
endif

COMPILE_CC=$(CC) -nostdinc $(newlib_include)

という感じになっている。これでは/path/to/includeが結局含まれない。 -nostdincがそれより前で指定した-Iをご破算にしてしまうからだ。

てゆか、これじゃcygwin1.dllを作れないと思うんだけど、どうやって作ってるんだ?

最終的には この変更 と、 windres問題のために~/binにdummyのi686-pc-cygwin-gccを用意した。 なぜかクロスのときはw32api/へ分割しないようになっているけど、 分けないと-mno-cygwin指定時に困ったことになるのでその対策も入っている。

% ln -s =gcc ~/bin/i686-pc-cygwin-gcc
% make -e tooldir=/usr/local/cygwin \
  T_CPPFLAGS='-DCYGWIN_CROSS_DIR=\"/usr/local/cygwin\"'
% make -e tooldir=/usr/local/cygwin \
  T_CPPFLAGS='-DCYGWIN_CROSS_DIR=\"/usr/local/cygwin\"' install
% rm ~/bin/i686-pc-cygwin-gcc

DARK ANGEL 1

なぜか1巻が無料だったので借りる。 まんまとレンタルビデオ屋の策略にはまったようだ。 X-Files 8も6巻まで見てしまったのでちょうどいいか。

DIGITAL DREAM LIVE 2000

鈴木あみとか去年の今頃はまだいたんだなあ。なつかしい。


2001-11-25 (Sun)

[Cygwin] syslog

% grep LOG_PERROR syslog.cc
%

全くやる気なしかい!syslog.hにあるのは飾りか。

Linux 2.4.16-pre1

2.4.15はなんかかなりまずいらしい。

RubyUnit 0.4.7

更新。

Debian GNU/w32

いきなりクロスの環境の説明があるあたり期待できそう?


2001-11-26 (Mon)

diet libc

入れてみた。まずはfileutils 4.1で試そうと思うんだけど、 なかなかうまくいかない。 だましだましmakeを通してみたが、dfだけは

./df: cannot read table of mounted filesystems

となってしまう。あとで調べよう。

strip後のサイズは、

% ls -l ls
-rwxr-xr-x    1 watanabe ruby        69344 Nov 26 00:43 ls

とかなり小さい。もちろん

% ldd ls
        not a dynamic executable

だ。glibcをstaticにlinkしたものは

% upx -l /bin/ls
                     Ultimate Packer for eXecutables
            Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
UPX 1.07         Markus F.X.J. Oberhumer & Laszlo Molnar        Feb 20th 2001

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    440084 ->    192398   43.71%    linux/386    /bin/ls

と段違いだ。

printfを使うと怒られてしまう。

% printf '#include <stdio.h>\nmain(){printf("hello\\n");}\n' >foo.c
% diet gcc foo.c
/opt/diet/lib-i386/libc.a(vprintf.o): In function `vprintf':
vprintf.o(.text+0x52): warning: the printf functions add several kilobytes of bloat.

stdioも使うと怒られる。なかなか面白い。

P4W

CVS repositoryを探してみた。 ここ からたどれるようだ。 P4W Home に書いといて欲しいなあ。


2001-11-27 (Tue)

Linux 2.4.16

更新。速いマシンでtarballを作ってみた。 が、owner/groupがwatanabe/rubyじゃ文句言われちゃって全然だめだ。 つうわけで、tarballを作るときに

--owner=root --group=root

を追加。

vmware-config.pl

他のマシンでmakeするとvmware-config.plできなくなるので、 ソースだけ展開してmake symlinksしておく。 でも、これだけだとversion.hがないと言われてまだだめ。

The path "/usr/src/linux/include" is a kernel header file directory,
but it does not contain the file "linux/version.h" as expected.  This
can happen if the kernel has never been built, or if you have invoked
the "make mrproper" command in your kernel directory.  In any case,
you may want to rebuild your kernel.

make oldconfig depも必要だ。ひょっとしたら

make symlinks include/linux/version.h

だけでもいいのかな?


2001-11-28 (Wed)

また配送の乱れ

うーむ。 [ruby-list:32588] , [ruby-list:32591] が来ない。っておれの書いたメールだけなぜに?

Ruby 1.6.6

今日は出なかった。まつもとさんは29,30と東京らしいのでやっぱ来月か?

libcygwin-ruby16.dll.a

-wの状態だったので、+wした。

syslog

RegisterEventSource, ReportEvent, DeregisterEvnetSourceってな感じ。 syslog.ccは400行程度なのでちらっと見てください。


2001-11-29 (Thu)

RubyUnit 0.4.8

更新。

w3m vs emacs-w3m

おぉ。勘違いでしたね。 emacs-w3mと言えば、JとKがw3mと逆なのがすごく気になる。


2001-11-30 (Fri)

--enable-sharedとi386

cygwinとmingw32ではdefaultが--enable-sharedでi386固定とした。 i386にするのはs/i.86/i386/するだけだから簡単だが、 --enable-sharedをdefaultにするにはどうすればいいのか? 単に

enable_shared=yes

と予め設定しとけばいいかというと、これだと--enable-shared固定になってしまう。 --disable-sharedしてもここでyesになってしまう。 つまり、--disable-sharedを指定した場合、 それ以前にenable_sharedは設定されているわけで、

if [ x"$enable_shared" = x ]; then
   enable_shared=yes
end

としないといけない。というわけで

: ${enable_shared=yes}

となっている。あ、

: ${enable_shared:=yes}

のほうがいいのかもしれない。

rimのメール配送遅延

ったく、どうなってんだよ?調べると アナウンス があった。

○発生原因:  以下の状況が重なるためのメールサーバの高負荷 
 
・お客様宛に頻繁に無差別大量メールが着信していること 
・「BADTRANS.B」「Aliz」などのウィルス氾濫により、お客様宛に 
  頻繁にウィルスメールが着信していること 

このため、サーバの処理能力を超え、配送待ちメールが多数に上り、 
遅延が発生いたしております。

まったく。Outlookなんか捨てろよ。 無差別大量メールに関しては 21日 にもあるから、しばらくは続くのか?

で、例によって [ruby-dev:15324] が来ない。 なぜおれのメールが集中して遅れる?


<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!