Trial of building firefox on NetBSD/hpcmips

参照回数 []

firefox-1.0ビルド(途上)の記録

ある日、NetBSD 1.6.2/hpcmips上でfirefox-1.0をビルドしてみようと思い立った。

事前準備

glib-1.2.10.tar.gzのインストール

gtk+-1.2.10.tar.gzのインストール

libIDL-0.6.8.tar.gzのインストール

unzip551.tar.gzのインストール

zip23.tar.gzのインストール

そしてfirefox-1.0-source.tar.bz2のビルドへ...

で、期待に胸膨らませ起動!(/usr/local/firefox/firefox)...、数十秒後、何のエラーメッセージ も吐かずに終了してしまう(T_T)。

デバッグモード突入

firefox -g でgdb起動。gdbでのstep実行およびprintfデバッグにより、 ./toolkit/xre/nsAppRunner.cppの(1830行目)NS_ENSURE_TRUE(em, 1);でエラー リターンしてるらしい事をつきとめた。
1823       NS_TIMELINE_ENTER("appShellService->CreateHiddenWindow");
1824       rv = appShellService->CreateHiddenWindow();
1825       NS_TIMELINE_LEAVE("appShellService->CreateHiddenWindow");
1826       NS_ENSURE_SUCCESS(rv, 1);
1827
1828       // Extension Compatibility Checking and Startup
1829       nsCOMPtr em(do_GetService("@mozilla.org/extensions/manager;1"));
1830       NS_ENSURE_TRUE(em, 1);  <-- ここで終了
1831
1832       if (CheckArg("install-global-extension") ||
1833           CheckArg("install-global-theme") || CheckArg("list-global-items") ||
1834           CheckArg("lock-item") || CheckArg("unlock-item")) {
1835         // Do the required processing and then shut down.
1836         em->HandleCommandLineArgs();
1837         return 0;
1838       } 
プリプロセッサによる展開後のソースでは以下のようになっている。
      nsCOMPtr em(do_GetService("@mozilla.org/extensions/manager;1"));

      do {  if (( !( em ) ) ) {  ; return   1 ; } } while (0)  ;  <-- ここで終了


      if (CheckArg("install-global-extension") ||
          CheckArg("install-global-theme") || CheckArg("list-global-items") ||
          CheckArg("lock-item") || CheckArg("unlock-item")) {
1829行目で生成しようとしているem(ポインタオブジェクト?)が生成できていない?という ことなのだろうが、どう対処したらいいのか判らない...。

その後、minimoプロジェクト なるものを教えてもらう。いろいろ調べてみると、なんと手元のソースツリーのなかに ./embedding/minimo/mozconfigというコンフィグファイルがあり、省資源に徹したビルドが 出来そうな気配が漂っている。

現在(2005/02/06)デバッグ敢行中。とりあえず、許容範囲で機能を切り詰めた コンフィグ設定を模索中。

2005/02/23、minimoの起動に成功!(^_^)/。

.mozconfig

./embedding/minimo/mozconfigをベースに試行錯誤を重ね、以下の省エネ版コンフィグを決定。
export MOZ_PHOENIX=1
mk_add_options MOZ_PHOENIX=1

ac_add_options --disable-ldap
ac_add_options --disable-mailnews
ac_add_options --enable-extensions=cookie,xmlextras
ac_add_options --enable-crypto
ac_add_options --disable-composer
ac_add_options --enable-single-profile
ac_add_options --disable-profilesharing
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-default-toolkit=gtk
ac_add_options --disable-xft
ac_add_options --disable-freetype2
ac_add_options --disable-profilesharing
ac_add_options --disable-profilelocking
ac_add_options --enable-single-profile
ac_add_options --disable-accessibility
ac_add_options --disable-composer
ac_add_options --enable-plaintext-editor-only
ac_add_options --disable-postscript
ac_add_options --disable-mathml
ac_add_options --disable-jsd
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --disable-necko-disk-cache
ac_add_options --enable-necko-small-buffers
ac_add_options --disable-logging
ac_add_options --disable-tests
ac_add_options --enable-crypto
ac_add_options --enable-necko-protocols=http,file,res,jar
ac_add_options --enable-image-decoders=png,gif,jpeg
ac_add_options --enable-strip
ac_add_options --enable-reorder

フルビルド

で、予想どおり、こちらは起動できません。 toolkit/xre/Makefileを「CXXFLAGS += $(TK_CFLAGS) -DDEBUG」に修正して コンパイルしたので、以下のメッセージが出ました。
WARNING: NS_ENSURE_TRUE(em) failed, file nsAppRunner.cpp, line 1878
###!!! ASSERTION: Can't veto change!: 'Error', file nsXREDirProvider.cpp, line 462
Break: at file nsXREDirProvider.cpp, line 462
メモリの絶対量が足らんとか、ヒープ領域の限界とか、それ系の問題とは思うのですが、 とりあえず、こちらはペンディング。

minimo(Embedding distribution of Mozilla)のビルド

embedding/config/readme.htmlを参照し、

問題点

という訳で、常用するには「やっぱり(Mobile Gear II MC/R450には)重たい」という 点を我慢しても、キツイです(-_-;。

さらなる研究が必要かと思ってます。

2005/02/27現在の状況

gtk+-1.2系を使ったビルドでは動きに怪しい点が多々見受けられるので、 gtk+-2系にアップして、ビルドし直してみようと考えてます。ただし、 gtk+2.4系以降はXftが必須になるみたいなので、gtk+2.2系を現在ビルド しております。さて結果はどうなりますか...。

2005/03/07現在の状況

なんやら port-hpcmips ML (Subject: minimo) あたりで、このページが報告されているよう(^^;。おおむね好意的に受け入れて もらってる様子。まぁなんて言うか、単純に励みになりますなぁ...。

I subscribed to join port-hpcmips in 7 Mar 2005. I hope that I can report about successing to use minimo on NetBSD/hpcmips as soon as possible.

で進捗状況はというと、gtk+-2.2.4のビルドには成功しました。ただ、localeまわり の問題とからんで日本語入力(xim)関係の調整に時間がかかっています。方向性として は、X_LOCALEの利用はやめて、LD_PRELOADで独自setlocaleにoverrideさせる方法で 作業を進めています。

2005/03/10現在の状況

pkgconfig-0.15.0

libiconv-1.9.1

glib-2.2.3

atk-1.2.4

pango-1.2.5

libIDL-0.8.5

gtk+-2.2.4

edit .mozconfig

「--enable-default-toolkit=gtk」-->「--enable-default-toolkit=gtk2」
export MOZ_PHOENIX=1
mk_add_options MOZ_PHOENIX=1

ac_add_options --disable-ldap
ac_add_options --disable-mailnews
ac_add_options --enable-extensions=cookie,xmlextras
ac_add_options --enable-crypto
ac_add_options --disable-composer
ac_add_options --enable-single-profile
ac_add_options --disable-profilesharing
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --disable-xft
ac_add_options --disable-freetype2
ac_add_options --disable-profilesharing
ac_add_options --disable-profilelocking
ac_add_options --enable-single-profile
ac_add_options --disable-accessibility
ac_add_options --disable-composer
ac_add_options --enable-plaintext-editor-only
ac_add_options --disable-postscript
ac_add_options --disable-mathml
ac_add_options --disable-jsd
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --disable-necko-disk-cache
ac_add_options --enable-necko-small-buffers
ac_add_options --disable-logging
ac_add_options --disable-tests
ac_add_options --enable-crypto
ac_add_options --enable-necko-protocols=http,file,res,jar
ac_add_options --enable-image-decoders=png,gif,jpeg
ac_add_options --enable-strip
ac_add_options --enable-reorder

After full build & minimo build

orz...その後、Linux(intel)上でも同一手順でビルドしたminimoが、同じ箇所で core dumpedすることが発覚。とりあえず、Linux上でデバッグ後、hpcmips版の ビルドを再開しようと考えてます。

2005/03/18現在の状況

その後、 dist/Embed/ 以下の(本来の)minimoは core dumpするものの、 dist/firefox-mipsel-unknown-netbsd1.6.2.tar.gz を展開した中で ./run-mozilla.sh ./TestGtkEmbed すると無事にminimoが起動!しました (^o^)/。まぁ、なんやら釈然としない気持は有るのですが、とりあえず 起動できたことは喜ばしいと...。

んで、動作確認をしてみたんですが、gtk+-1.xをリンクしてたときの <input type="text" ... >タグでの日本語化けは回避できてた のですが、<input type="submit" ... >タグ(ボタン)には、やはり 反応してくれませんでした...。

で、現在は .mozconfig の設定でもう少し改善できないか調査中です。


2005/03/22現在の状況

ビルドには成功したものの、<input type="submit" ... >タグ(ボタン)に 反応しなかったminimoですが...、

ついに、まともなビルドに成功しました :-)

最後の最後で、さんざん悩んだんですが、今一度ビルドのログを眺めてみると、 そこここに「Unknown option: -」(若干不正確かも)というようなメッセージが 出ており、なんじゃいなと調べてみると、 config/rules.mk の中で、perlに引き渡す「--」オプションの記述位置が おかしかったようです(元バグ?)。ただし、perlのバージョンが新しいと、問題に ならないようでもありますが...。

で、config/rules.mk を修正して、ビルドし直したら、見事に<input type="submit" ... >タグ(ボタン)に 反応してくれました :-)

と言うわけで、(私にとっては)永かったminimo on NetBSD/hpcmipsのビルドも 一応の完結を迎えることができました。ビルドのサマリは以下からどうぞ。

Summary of building Minimo on NetBSD/hpcmips

スクリーンショット


Return
introduction of kyoto internet people
[更新]