OPIE の戦い


主戦場を qtopia-free から opie に移す。

Opie もインストールするにはやっぱり /home/QtPalmtop 全とっかえ以下略なので、 まともに full build すらせずほっといた (そういうことするから個別 make でハマるんだろーが > オレ) ものだが、chroot jail が qtopia 動かせるほどまともになってくると opie も動く ... だろう、たぶん。

このあたりの CVS から opie のソース、opie は qt-embedded 2.3.4-beta5 でなきゃ動かんてことなので それは こっちから。 beta のとれた qt-embedded 2.3.4 もでているが、qt234-for-opie パッチはあたらんわ、 てきとーに修正して make したらエラーの塊でダウンした。

とかいいつつ qt-embedded 2.3.4 を使う。どーやら 2.3.4-beta5 に対する opie patch は 2.3.4 に姿を変えてとりこまれてる風。

一見、ひじょ〜に自然な流れだが、この時点ですでにワナに嵌っているのであった。

qt-embedded 2.3.4

A300 〜 C700 に付属する libqte は 2.3.2 だが、 ライブラリバイナリに縛られない SL-5x00 な人達は qt-embedded 2.3.4 に移行済みらしい。 たかが末尾の revision 違いと思うなかれ、 qt 3.0 よりも後の登場なだけあって中身を見たらなんかもう別物。 Qt3 から降りて来た QIMEvent のサポートが特に嬉しいぞ。 おかげで qte232-a300 パッチ当たんないけど。

とりあえず手で TS_EVENT 書き換えて build した。

make and install

% export QTDIR=/home/src/Qt/arm/qt-embedded-2.3.4
% PATH=/opt/Embedix/tools/bin:${PATH}
% cd /home/src/Qt/arm/qt-embedded-2.3.4
% cp ../opie-cvs/qt/qconfig-qpe.h src/tools
% ./configure -qconfig qpe -depths 16,32 -xplatform linux-sla300-g++ \
              -system-jpeg -system-libpng -system-zlib -no-qvfb -no-vnc -no-xft
% make |& tee ../make.qte.log
% cd ../opie-cvs
% export OPIEDIR=/home/src/Qt/arm/opie-cvs
% make menuconfig
% make |& tee ../make.opie-cvs.log
opie も巨大になって、カーネルと同様の make menuconfig 受け付けるようになってる。

それと 2.3.4 の場合、jpeg 〜 zlib は configure option だけで qt-embedded 外に追い出せる。 つーか、順番的には 2.3.4 の src/Makefile.in 見て 2.3.2 のを直したんだけど ...

Install も似たようなもの。

# mkdir /home/src/SUBSYSTEM/arm/usr/local/opie
# export JAIL_OPIEDIR=/home/src/SUBSYSTEM/arm/usr/local/opie
# cd /home/src/Qt/arm/qt-embedded-2.3.4
# tar -cvp lib | tar -xpC ${JAIL_OPIEDIR}
# cd /home/src/Qt/arm/opie-cvs
# tar -cvp apps bin doc docs etc help i18n pics plugins share sounds \
     | tar -xpC ${JAIL_OPIEDIR}

A300 側では:

# mount -t nfs atropos:/home/src/SUBSYSTEM/arm /home/root/debian
# cd /home/root/debian
# chroot . /bin/zsh
# mount -t proc proc /proc
# unset LOGNAME
# export QTDIR=/usr/local/opie
# export OPIEDIR=/usr/local/opie
# LD_LIBRARY_PATH=/usr/local/opie/lib
# PATH=/root/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/opie/bin:/usr/local/bin
# kill -1 1
sed 's/qpe/opie/g' するだけでなんらかわりなし。起動すると:

# /usr/local/opie/bin/qpe
... (中略)
segmentation fault.

状況 !

世の全てが怪しく思える訳だが ... opie は cvs 最新の unstable だし、 libqte は非推奨の 2.3.4 正規版だし、 opie 付属のパッチ qt/qte234-for-opie091-*.patch あててないし(つーかあたんないし)、 おまけにターゲットが OPIE 非サポートの SL-A300 で、 正しい?インストールもせず jail 作った中に手でインストールしてるので 起動前のおまじないやらなんやら(があるとして)ぜんぶさぼってる。

... 実は一発で動くほうが奇跡か?

opie applications

疑うべきところが多すぎ、めんどくなって半日ほどほっといたのだが、せっかく作ったのだからと opie-qpdf 単独で動かしたらふつーに動く。
# /usr/local/opie/bin/qpdf -qws -display LinuxFb:0

順繰りにみてったら落ちるのはよーするにランチャの /usr/local/opie/bin/qpe だけでやんの。

その順繰りに試したなかに DrawPad とゆーものがある。お絵描きソフトである。 これがおそろしくはやかった ── というのは説明がいると思うが ...

A300 の Qtopia では、物理的なペンダウンからそれがアプリに伝わるまで最悪で約 100ms かかる。 ペンムーヴの処理は 1ms 強くらいのものなのだが。

Qtopia free だと約 70ms になるが、それでも X に比べると激烈に遅く、 お絵描きソフトや手書きメモなどでペンダウンから素早い移動に対して 描線のスタートダッシュが遅れるのが目で見える。 (お絵描きソフト側の処理の責任ではない ... 線描きを伴わないプログラムで見てもレイテンシは ほどんと変わっていない)。

Opie の DrawPad で見るかぎり、opie は X よりはやいんじゃないか? ペン先にぴったり追従する。 アプリの起動時間そのものは A300 の ROM 1.0J レベル (世界時計の起動に約10 秒; ただ、 NFS 越しでの起動というのは考慮する必要がある) で、 全体として軽いわけではないが、内部構成の素性は良さそう。

qtopia 1.5.0 + libqte 2.3.4

マジメにコードを追いかけると isVisibleWindow(int) (static な関数で、core/launcher/desktop.cpp, core/launcher/launcer.cpp の 2 箇所にある) の中で落ちていた。 内容は QList<QWSWindow> の中を掃引するだけの関数で、 どーみても汎用コードである。 実際、qtopia-free 1.5.0 の taskbar/ の下にもまったく同じものがある。 qtopia-free なら昨日動かしたばっかである。 ほんならと qtopia を libqte 2.3.4 と組みにして動かすと segmentation fault で落ちた。

libqte 2.3.4 のバグ確定。

で、最初に戻るのだが、qte 2.3.2 と qte 2.3.4 て、むちゃくちゃ中身が違ってる訳で、 どこでどーエンバグしたんやら、さっぱり分からんのであった。 ちなみに diff -uNr qt-embedded-2.3.2 qt-embedded-2.3.4 すると 3.6 MB ほどになる。

opie-snapshot-20021122 + libqte 2.3.2

libqte 2.3.2 に戻る。opie-cvs 最新を make しようとするとさすがに途中でコケる。 どーも 2.3.2 → 2.3.4 で transformed 周りに手が入っていて、opie の最新はそれを使っている ... portrait/landscape の即時切替えサポートとかだと嬉しいが、コード的にまだ動かなそうなので、 とりあえず気にしない。

stable というのかどうか、snapshot 版 を拾ってきて、これと組む。 こちらは make menuconfig でなく、まだ

# ./configure -platform linux-sharp-g++ 
とする。 もっとも def-configs/ あたりに make menuconfig するための準備は入ってた。 make は最後まで通り、qpe も起動した。

Screenshot

OPIE (ja)
Language を日本語にし、Appearance からデフォルトフォントも切替えると日本語もちゃんと見える。 デフォルトフォントを Unifont 以外にするのに ソースをいじる必要のある Qtopia よりかなりいい。 どこで切替えるかってあたりがとっても分かり辛いけど。ついでに半透明メニューを使ってみた。

一方、日本語を入力する方法は今のところない。 もちろんかつて テスト的に SL5x00 で行われていたように、 unicode map から 1 文字ずつ手で拾ってけばできるけど、今それをせいと言われてもちょっと ...。 また、Anthy が qte に対応しつつあるが、 IM サポートのない qte 2.3.2 では話が遠い。せめて qte 2.3.4 に移れないとねぇ。

パッチ

ない。opie のソースは 1 バイトたりとも変更していない(まだ :-)。 libqte から font から、すべて qtopia-free の時の蓄積だけで opie は動いた。結果的には。


[日記へ] [目次へ]