Just another Ruby porter,

〜2002年6月上旬〜


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

2002-06-01 (Sat)

[Cygwin] libiconv 1.8

Cygwinで--enable-sharedだとエラーになるのは直ってないので

--disable-shared --enable-static

しないとだめ。

% CFLAGS=-Os DLLTOOL=i686-pc-cygwin-dlltool \
  RANLIB=i686-pc-cygwin-ranlib ../configure \
  --prefix=/usr/local/cygwin-local --target=i686-pc-cygwin \
  --host=i686-pc-cygwin --build=i586-pc-linux-gnu \
  --disable-shared --enable-static

[Ruby] Ruby/GTK 0.28

更新。$LDFLAGSの件はruby-gnome-users-ja MLにも書いたけど、順番がまずい。

--- extconf.rb.orig	2002-06-01 13:35:50.000000000 
+++ extconf.rb	2002-06-01 21:12:12.000000000 
@@ -15,3 +15,3 @@
     if not version.chomp.empty?
-      $LDFLAGS += ' ' + `#{config_cmd} --libs`.chomp
+      $libs += ' ' + `#{config_cmd} --libs`.chomp
       $CFLAGS += ' ' + `#{config_cmd} --cflags`.chomp

CDTV GOLD

筋肉番付は打ち切りになったようだ。

5月のspam

219通。韓国から74通。


2002-06-02 (Sun)

[Ruby] win32ole [1]

1.7に入った。早速makeしてみるとエラーに。

ext/win32ole/win32ole.c:676: structure has no member named `bool'

w32apiが古いのか?今使ってるのはw32api-1.2-1だから、 最新のw32api-1.4-2にしてみよう。

[Cygwin] w32api 1.4-2, mingw 1.3-2

そういえばw32apiだけを更新ってしたことがなかったかな。

% CFLAGS=-Os ./configure \
  --target=i686-pc-cygwin \
  --host=i686-pc-cygwin \
  --build=i586-pc-linux-gnu \
  --prefix=/usr/local/cygwin
% make
% make tooldir=/usr/local/cygwin install

ついでにmingwも1.3-2に上げる。手順は全く同じ。

[Ruby] win32ole [2]

だめだなあ。うーむ。nativeだとちゃんとうまくいってる。何が違う? あ、わかった。PLATFORMは駆逐したからfake.rbで置換するのをやめたからだ。 だからcase whenでcygwinにならない。-DNONAMELESSUNIONがつかないのが原因だ。 まだPLATFORMを使ってるライブラリがあったのか。 というよりPLATFORMを使うべきじゃないってあまり知られてないのかな。 version.cにも書いてあるんだけど。

/* obsolete constants */
rb_define_global_const("VERSION", v);
rb_define_global_const("RELEASE_DATE", d);
rb_define_global_const("PLATFORM", p);

いつなくなっても不思議ではない。RUBY_がついてるものを使おうよ。

wget 1.8.2

更新。

Wget 1.8.2 is a bugfix release with no user-visible changes.

ということで何が変わったんだかわからない。


2002-06-03 (Mon)

[ruby] %w[...]

1.4の頃は確かにできなかったけど、今なら\が使えます。

% ruby-1.4.6 -e 'p %w[a\ b]'
["a\\", "b"]
% ruby -e 'p %w[a\ b]'
["a b"]

と思ったら、空白じゃなくて空文字列だ。無理っぽい。

[ruby] .cvsignore

え?それって1.6にない拡張ライブラリですよね?かなり無理な注文です。 configure.linenoは初めて見るけどautoconfの残骸だろうか。

[Cygwin] libiconv 1.8

gcc, dlltoolの3回廻しだとWinMain@16がundefinedになるので、 gcc -shareしてみた。 ここ に差分を置いとこう。


2002-06-04 (Tue)

Linux 2.5.20

ChangeLog を見ると、 フロッピーの件 は直ったようだ。

<trini@kernel.crashing.org>
  [PATCH] Fix RAMDISK config problem

  The following fixes compilation with CONFIG_BLK_DEV_RAM=y I assume that
  Rusty intended to use a test for CONFIG_BLK_DEV_RAM and not
  BLOCK_DEV_RAM.

suspendはまだだめみたい。というわけで待ちだ。

<axboe@suse.de>
  [PATCH] documentation and tq_disk removals

  This should be the last of tq_disk, at least the trivial ones. md still
  has some queue_task references, I'll let Ingo/Neil clean those up.
  suspend is still broken, it was broken before too though. I guess Pavel
  will want to fix that.

2002-06-05 (Wed)

Linux 2.5.20-dj3

惜しい。

arch/i386/kernel/kernel.o: In function `do_suspend_lowlevel':
arch/i386/kernel/kernel.o(.text+0x7c20): undefined reference to `acpi_save_register_state'
arch/i386/kernel/kernel.o(.text+0x7c27): undefined reference to `acpi_enter_sleep_state'

arch/i386/kernel/suspend.cで呼んでるってことは、 ソフトウェアサスペンドを使いたければCONFIG_ACPIはyじゃなきゃだめってことか?

[Cygwin] More 1.3.11 road show

defaultがbinmodeになる。

As promised, I have been making binmode the default in cygwin.  You can
still use the mount command (or setup.exe for that matter) to default to
text mode but I am slowly removing all text mode assumptions from the
code, specifically for accesses of remote shares (as was previously
requested in this mailing list).

ということなので、ますますtext modeは使われなくなりそう。 ま、開発者もtext modeを使ってないんだから遅過ぎる選択とも言える。

[Ruby] 1.6.8

そういえばそろそろリリースの季節だろうか?


2002-06-06 (Thu)

perl-current

5.8.0 RC1が出たので試す。 と思ったがperl-currentをrsyncしてたことを忘れてた。 こっちを試そう。

make all testすると 2時間近くかかる だけに簡単に試せないんだが、その間perldeltaを読む。 openがかなり拡張されてる。

PerlIO is Now The Default

IO is now by default done via PerlIO rather than system's "stdio".
PerlIO allows "layers" to be "pushed" onto a file handle to alter the
handle's behaviour.  Layers can be specified at open time via 3-arg
form of open:

   open($fh,'>:crlf :utf8', $path) || ...

or on already opened handles via extended C<binmode>:

   binmode($fh,':encoding(iso-8859-7)');

という感じでPerlはstdioを捨てたようだ。あ、defaultってことは選べるのか。

File handles can be opened to "in memory" files held in Perl scalars via:

   open($fh,'>', \$variable) || ...

ふむ。なるほど。


2002-06-07 (Fri)

Perl 5.8.0 RC1

早速sjisなリテラルを試す。

% echo 'print "表示\n";' |iconv -t sjis |\
  perl -Mencoding=sjis,Filter,1 |iconv -f utf-8
表示

というわけでFilterはうまくいってるようだ。 次にスクリプトはutf-8でSTDOUTはeucにしてみる。

% echo 'print "表示\n";' |iconv -t utf-8 |\
  perl -Mencoding=utf-8,STDOUT,euc-jp        
表示

okだ。じゃsjisなスクリプトでSTDOUTはeucだとどう?

% echo 'print "表示\n";' |iconv -t sjis |\
  perl -Mencoding=sjis,Filter,1,STDOUT,euc-jp |iconv -f utf-8
表示

だめだな。utf-8のままだ。じゃeucでeucだと?

% echo 'print "表示\n";' |\
  perl -Mencoding=euc-jp,Filter,1,STDOUT,euc-jp |iconv -f utf-8 
表示

やっぱりutf-8のままか。 /usr/local/lib/perl5/5.8.0/i586-linux/encoding.pm を見るとFilter処理のときはSTDOUTの設定はしてないな。

binmode(STDIN);
binmode(STDOUT);

となってる。じゃ自分でbinmodeすればいいのか。こんな感じで。

binmode(STDOUT, ":encoding(euc-jp"));

ってなんでbinmodeにこんな機能をつけ加えたんだろう? openも引数が3つになってるし、Perlは新しい関数を増やすのが嫌いらしい。 それはそれとして結局use utf8;も必要でこうするとうまくいく。

% echo 'binmode(STDOUT,":encoding(euc-jp)");print "表示\n";' |\
  iconv -t sjis|perl -Mencoding=sjis,Filter,1 -Mutf8
表示

これをスクリプトにするとこうなる。

% iconv -f sjis sjis2euc-jp.pl
#! /usr/local/bin/perl
use encoding "sjis", Filter=>1;
use utf8;

binmode(STDOUT, ":encoding(euc-jp)");
print "表示\n";

いろんなもんをuseするし、さらにsjis->utf8->euc-jpと変換されるわけで、 実行すると非常に遅い。

% time perl sjis2euc-jp.pl
表示
perl sjis2euc-jp.pl  1.06s user 0.11s system 99% cpu 1.171 total

encodingが大半を占めている。

% time perl -Mencoding=euc-jp -e0
perl -Mencoding=euc-jp -e0  0.79s user 0.09s system 101% cpu 0.868 total
% time perl -Mutf8 -e0                   
perl -Mutf8 -e0  0.13s user 0.02s system 101% cpu 0.148 total

2002-06-08 (Sat)

[Ruby] date2 3.3

更新。

UPX 1.21

GCC 3.1でも大丈夫みたい。ただ-lstdc++が足りないのは変わってない。 gccじゃなくてg++を使えばいいんだけど。


2002-06-09 (Sun)

GTK+ and GIMP for Windows

2000-12-26バージョンも手に入りにくくなってるので、そろそろ新しくしよう。 使う時必要なのは

glib-2.0.3-20020525.zip
gtk+-1.3.0-20020313.zip
libiconv-1.7.zip
libintl-0.10.40-20020310.zip

のDLLで、make時に必要なのは-devがついてる

glib-dev-2.0.3-20020525.zip
gtk+-dev-1.3.0-20020313.zip
libiconv-dev-1.7.zip

だ(include/とlib/)。libintlはなぜか分かれてない。 pkg-configも入れてもいいが、Cygwinにもパッケージがあるのでそっちを使った。

適当なディレクトリで全部展開する(/usr/local/gtkとする)。 Ruby/GTKで試してみよう。ruby-gtk-0.28は 例の問題 があるのでCVS版を使う。 最新のGTK+ for Windowsはpkg-configに対応してるので楽だ。

% cd gtk
% PKG_CONFIG_PATH=/usr/local/gtk/lib/pkgconfig \
  ruby extconf.rb \
  --with-gtk-config='pkg-config gtk+-1.3-win32-production --define-variable=prefix=/usr/local/gtk'

prefixは/targetになってるので/targetを作ってそこに置けばprefixを置き換える必要はない。

% PKG_CONFIG_PATH=/target/lib/pkgconfig \
  ruby extconf.rb \
  --with-gtk-config='pkg-config gtk+-1.3-win32-production'

という感じ。これでok。

P.S. リンク切れてるとの指摘があったので一応最新の場所を(2012-09-10記)

GTK+ Download: Windows (32-bit)

interdiff

patchutils のinterdiffを使うと incremental patchが作れる。たとえば-dj patchだと

% interdiff -z patch-2.5.20-dj{3,4}.diff.bz2 | \
  bzip2 >patch-2.5.20-dj3-dj4.diff.bz2

という感じ。

[Ruby] Linux 2.5.21

こう来たか。

suspend.c:306: warning: #warning This might be broken. \
  We need to somehow wait for data to reach the disk

2002-06-10 (Mon)

Ruby/GTK for MinGW

新しいGTK+ for Windowsにしたらgdkwin32.hの場所が変更になったようでエラーになる。 もう面倒だから

#define HWND_DESKTOP 0
#define GDK_ROOT_WINDOW() ((guint32) HWND_DESKTOP)

としちゃおうか?


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