やはり疲れ切ったときにやるのは良くない。メーリングリストにも流れていたが、Canna は "rpm --rebuild" ではダメであった。使っていないのがばれてしまう。ついでに言えば、Wnn にも問題があった。Canna の問題は 1999/06/20の [5-10] Scilab-2.4.1 の static 変数の初期化で stdout を代入できなくなったと同じ問題で(stdout でなくこの場合は stdin)、辞書が作成できない。これは、実行時に main の中で最初にセットするように変更しなくてはいけない。このパッチは既に大江さんが発表しておられた。やはり、メーリングリストに参加していないと重要な情報を見逃すことがある。このパッチをあてて Canna は作りなおした。そのうち、JL(PPC)UG から正式版がでるまでのつなぎ。
それと、Wnn に関しては、ユーザー辞書を入れるディレクトリーを作る際に、wnn の持ち物でなく root の持ち物にしてしまう。この原因は、gcc の暗黙のフラッグが変わってしまったために、
Xsi/Wnn/jserver/do_filecom.c
の中の #if でスイッチされる2つの js_mkdir() 関数の正しい方が選ばれなくなってしまったことにある。そこで
--- Xsi/Wnn/jserver/do_filecom.c.ORIG Thu May 27 13:42:53
1993
+++ Xsi/Wnn/jserver/do_filecom.c
Wed Jun 23 23:02:47 1999
@@ -83,7 +83,7 @@
/* mkdir */
#define MODE (0000000
| 0000777)
-#if defined(BSD42) || defined(uniosu) || defined(UX386) || defined(DGUX)
+#if defined(BSD42) || defined(uniosu) || defined(UX386) || defined(DGUX)
|| de
fined(__GNUC__)
/* #define MODE (0040000 | 0000731)
*/
/* #define MODE (0000000 | 0000733)
*/
@@ -108,7 +108,7 @@
}
#endif
-#if defined(SYSVR2) && !defined(uniosu) && !defined(UX386)
&& !defined(DGUX)
+#if defined(SYSVR2) && !defined(uniosu) && !defined(UX386)
&& !defined(DGUX) &
& !defined(__GNUC__)
void
js_mkdir()
{char path[FILENAME];
などというパッチをあてなくてはならない。これをあてて
Wnn のパッケージも作り直し。今度はちゃんと動作を確認した。
[5-11] ついでだから X-TT
XFree86 になったのだから、X-TT 標準配布のパッチが比較的簡単にあたるはずと思って、試すことに。これがうまく行けば当初の目的はほぼ 100% 達成。思惑はほぼ正解。LinuxPPC の XFree86 には、実は freetype パッチが既にあたっていることが判明。これが "rpm -bp" の後で X-TT パッチをあてようとすると失敗する原因。そこで、XFree86 の SPEC より patch56 を除く。例えば、
# rpm -ivh <somewhere>/XFree86-3.3.3.1-49a.src.rpm
# cd /usr/src/redhat/SPECS
# vi XFree86-3.3.3.1.spec
....
# %patch56 -p1 -b .xfsft
...
# rpm -bp XFree86-3.3.3.1.spec
# pushd ../BUILD/XFree86-3.3.3.1/xc
# tar -zxvf <somewhere>/xtt-1.2.tar.gz -C ../..
# patch -p1 -s -t -E -N < ../../xtt-1.2/shared-libfont-1.0.diff
# patch -p1 -s -t -E -N < ../../xtt-1.2/xfs-for-delayed-font-1.0.diff
# patch -p1 -s -t -E -N < ../../xtt-1.2/make-xfs-only-1.1.diff
# patch -p1 -s -t -E -N < ../../xtt-1.2/xtt-xf333-changes.diff
# patch -p1 -s -t -E -N < ../../xtt-1.2/contribute/xtt-xfsft-lib.patch
# patch -p1 -s -t -E -N < <somewhere>/xtt-1.2-Xpmac.patch
# tar -xvf ../../xtt-1.2/xtt-core.tar -C lib/font/
# pushd config/cf/
# cp -p xttsite.def xttsite.def.ORIG
# vi xttsite.def
...
#define FreeTypeLibDir
/usr/lib
#define FreeTypeIncDir
/usr/include
#define FreeTypeLibName
ttf
...
# popd
# make World CDEBUGFLAGS="-O2 -fsigned-char" >& world.log &
# tail -f world.log
# mkdir /tmp/xtt-root
# (cd lib/font; make install DESTDIR=/tmp/xtt-root)
# tar -zcvf /usr/src/redhat/BUILD/XFree86-libfont.tar.gz -C /tmp/xtt-root
usr
# (cd programs/Xserver; make install DESTDIR=/tmp/xtt-root)
# (cd /tmp/xtt-root/usr/X11R6/bin; mv xfs xfs-TT; mv Xpmac Xpmac-TT;
\
> mv XF68_FBDev XF68_FBDev-TT)
# tar -zcvf /usr/src/redhat/BUILD/XFree86-xfs-TT.tar.gz \
> -C /tmp/xtt-root usr/X11R6/bin/xfs-TT
# tar -zcvf /usr/src/redhat/BUILD/XFree86-Xpmac-TT.tar.gz \
> -C /tmp/xtt-root usr/X11R6/bin/Xpmac-TT
# tar -zcvf /usr/src/redhat/BUILD/XFree86-FBDev-TT.tar.gz \
> -C /tmp/xtt-root usr/X11R6/bin/XF68_FBDev
てな感じの作業。libfont だけは binary only RPM にしておいた。Xpmac-TT、xfs-TT
等は tgz のみ。
FontPath の設定は XF68_FBDev を使う場合は XF86Config
で設定できるが、Xpmac は XF86Config は知らないので、明示的に
$ xset fp+ /usr/lib/X11/fonts/TrueType
などとして使う。
あっさり動いてしまった。ただし、Xpmac を作る際には上記のように
もあてて、libfont がリンクされるようにする必要がある。
これで、いよいよ明日から、本格的に仕事での R5 の試運転が開始できる。