カーネルの再構築に言うほどの問題はなかった。 気をよくして qtopia の rebuild に入ってみれば ── Debian 環境では果てしなく泥沼だった。理由は 3 つ。
では本来はどーなってるのかと宝箱から SDK 拾って deb に変換してインストール、 /opt/Qtopia/ に入った。 これなら確かに QTDIR=/opt/Qtopia/ すればいけそうだ。 ためしに i386 向けにセルフ構築。
% cd /home/src/zaurus/Qt % zcat qtopia-free-1.5.0.tar.gz | tar -x % cd qtopia-free-1.5.0 % QTDIR=/opt/Qtopia QPEDIR=/home/src/zaurus/Qt/qtopia-free-1.5.0 ./configure % QTDIR=/opt/Qtopia QPEDIR=/home/src/zaurus/Qt/qtopia-free-1.5.0 make |& tee ../make.log
すると、library/backend/ 下の yacc vcc.y のところで落ちる。 なんとこのファイルだけファイルの行末が CR LF 型なので CR を剥ぎ取るほか、 vcclex が未宣言といって怒られるので、vcc.tab.c の先頭のほうに
を加えた。あとは何ということもない。 qtopia-free-1.6.0-snapshot も同様に出来た。static int vcclex();
Debian のバイナリを使うにも QTDIR 作るのがやはり早道と /usr/local/qt 作ってここから symlink をあちこちに張ってるうちに /usr/share/qt なる存在に気付いた。/usr/share/doc/libqt2/README.Debian によれば、ここが Debian での QTDIR とのこと。
この QTDIR=/usr/share/qt でうまくいけば問題ないのだが、これがよく止まる。 直した点は以下のとおり:
build がおわったあとで libqt-dev を入れて (libqt-emb-dev は追い出される)、
% qvfb -depth 16 -width 240 -height 320 & % cd /home/src/zaurus/Qt/qtopia-free-1.5.0/bin % QTDIR=/usr/share/qt QPEDIR=/home/src/zaurus/Qt/qtopia-free-1.5.0 ./qpe -qws -display QVFb:0
すると qtopia on qvfb が起動した。
メニューとか既に日本語なんだけど、そういうもん?
qtopia 自身が locale 持ってるとは思えないから、kde-i18n-ja か何かを参照してんのかしらん。
と思ったら、qtopia に ja な locale が入っていた。おみそれしました ...
こっちのケースでは PATH に /opt/Embedix/tools/bin/ を入れておいた。 なんか意志不徹底かも。
% export PATH=/opt/Embedix/tools/bin/:${PATH}
% export QTDIR=/home/src/zaurus/Qt/qt-embedded-2.3.2
% ./configure -xplatform linux-sharp-g++
ちなみに platform 指定の "linux-sharp-g++" はおそらく SL5000 系
(フレームバッファが landscape ... なんだよね?) で、
そのままでは SL-A300 (フレームバッファが portrait) では動くまい。
実際の configuration は linux-ipaq-g++ とのちゃんぽんになるだろう。
中見たらいろんなデバイス叩きまくってて、はたして (フレームバッファ以外は) SL5000 と同じなんかぁ ...
と思うような部分もあるんだけど。
gif はともかくとして zlib, jpeg, png については Qt 内/外を選べる。 さてどれだろう ── ということで SL-A300 の ROM ん中を覗いて、 libjpeg 発見、png の名前を libqte の中に発見。たぶん -system-jpeg だけかな。 zlib は error コードのみで未サポート、たぶん。もっとも config に入ると せっかく人がいろいろ手で指定したのに
Choose a feature configuration: 1. Minimal (630 kB) 2. Small (960 kB) 3. Medium (1.5 MB) 4. Large (3 MB) 5. Everything (5 MB) 6. Your own local configuration (src/tools/qconfig-local.h)などと訊いてきて、ぜんぶ自動かい。 ためしに 1 (← build に時間かからなさそう) で make してみたらコンパイルエラーで落っこちた。をいをい。
ところで、このメニューには "src/tools/qconfig-local.h" なるヤな名前がある。 まさかと思い近所を覗けば qconfig-*.h に付け外し可能な機能定義が山と並んでいた。 google で当たると 機能定義一覧 もあった。
Minimal 〜 Everything も 、ようするにこれらの取捨選択になってるだけで、 SL-A300 の本物の function って ... もしかしてしなくても 1 〜 5 のうち どれでもない(自前カスタマイズ)可能性があるのだな。
とりあえず qtopia のほうを読めば、それっぽいのがあったのでこちらから。
% patch -p0 < ../qtopia-free-1.5.0/qt/qte232-for-qpe150.patch % cp ../qtopia-free-1.5.0/qt/qconfig-qpe.h src/tools/qconfig-local.h % ./configure -xplatform linux-sharp-g++ % make... で同じのが出来ればそれにこしたことはないが、(libqsfepj.so の対応部分をおくとしても) そんな訳はなかろうということで出来たファイルを本物と比較する。
% strings /home/src/zaurus/rootfs/root/usr/QtPalmtop.rom/lib/libqte.so.2.3.2 | sort > rom.list % strip --strip-all lib/libqte.so.2.3.2 % strings lib/libqte.so.2.3.2 | sort > rebuild.list % diff -u rom.list rebuild.listつらつら眺めると多少出入りがある。最終的に qconfig-local.h を
し、config では-#define QT_NO_CODECS +// #define QT_NO_CODECS
./configure -xplatform linux-sharp-g++ -no-qvfb -no-vnc -gif -system-jpegした。さらに
Choose pixel-depths to support: v. VGA-16 - also enables 8bpp 4. 4bpp grayscale - also enables 8bpp 8. 8bpp 16. 16bpp 24. 24bpp - also enables 32bpp 32. 32bpp Each depth adds around 100Kb on 80386. Your choices (default 8,16):と訊いてくるので、16,32 と答える。16 だけでいいはずだが、ROM の libqte.so.2.3.2 にはどーやら 32bpp のコードが入っている。なぜ入ってるかまでは分からないが、 gif 対応のところで 16bit bmp への非対応メッセージを新たに組み込んだところをみると、 32bit bmp がどこかで使われてるのかもしれない。 この他 qtooltip 周りと wordwrap 周りに手が入ってる様子だった (SL-A300 向け konqueror でワードラップが本家 Qt のケースと挙動が違うのは、 要するに libqte for SL-A300 のバグってことかい!)。 特に TOOLTIP 関連はどーなおしてもうまく一致せん。何をいじったんだろう。 ファイルサイズは各々↓な感じ:
% ls -l -rwxrwxr-x 1 root root 4126556 Jan 1 1970 libqte-rom.so.2.3.2 -rwxr-xr-- 1 kensyu users 4086712 Oct 6 19:21 libqte-rebuild.so.2.3.2開発環境用としては
./configure -xplatform linux-sharp-g++ -gif -system-jpegするが ... ま、こっちは略。