1999/06/23     I made a mistake....(Canna/Wnn) and X-TT

[5-9] Root のデバッグに疲れ切ったので息抜き(フォローアップ)

やはり疲れ切ったときにやるのは良くない。メーリングリストにも流れていたが、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 を作る際には上記のように

        xtt-1.2-Xpmac.patch

もあてて、libfont がリンクされるようにする必要がある。

これで、いよいよ明日から、本格的に仕事での R5 の試運転が開始できる。
 


Back to Keisuke Fujii's MkLinux/LinuxPPC Life