21. 情報共有 LibOパッチ作成まで  
【LibOパッチ作成のために自分が取った手順まとめ】 2014年12月12日 公開

この記事は、「LibreOffice Advent Calendar 2014」のために書かれました。
LibreOfficeの不具合の発見から修正までの大まかな流れをまとめておきます。


■不具合の存在に気づく          2013年頃
 Visioのバージョンによっては、LibreOffice Draw で開いた時に、矢印が表示されないことがありました。


 これを直したいなあ、なんて思っていました。そんな時に、「LibreOffice日本語チーム」の存在を知ります。
 https://twitter.com/libreoffice_ja

・LibreOfficeのコミュニティに参加     2014年3月
・LibO勉強会に参加


■LibOをビルドしてみる
・Windows環境でのビルド          4月
 日本語MLで質問しながら、Celeron 2コアのノートパソコンのVMWare上のWindows環境でビルドしました。
 当時のメール履歴をOSの移行時に失ってしまい(OS移行時にコピーを忘れていた)、
 ここで手順の詳細を述べることはできませんが、ビルドに24時間以上かかりました。

・Linux環境でのビルド           4月
 12時間程度でしょうか。Windowsでのビルドよりもずっと楽でした。こちらがオススメです。


■問題発生
・矢印が表示されない不具合が問題に!   5月
 とある会社への納品物がLibreOfficeに依存するのですが、この矢印問題について
 解決しない限り、まだ実用段階にないと判断されました。
 そして諸事情により一旦諦めることに。


■暇になったので
・LibOビルドに再挑戦           10月


■問題の箇所を特定する方法を考える    10−11月
 1.どのあたりを処理が走っているのか知りたい
   →バックトレースを指定の箇所で取る方法

 2.デバッグ情報をログに出力する方法
   →SAL_INFO 関数の利用

 3.ソースコードを自由に閲覧
   →GNU GLOBALで、ソースコードをHTML化して処理を追いやすくする

 ソースコードは、皆のチェックが入るからか、キレイで読みやすいですよ。
 今回パッチを取り込む際にも、メーリングリストで皆さんにチェックして貰って
 キレイなコードの状態で取り込んで頂けました。オープンソースの好循環を感じます。


■日本語MLの皆様には大変お世話になりました。
 皆さんのご協力がなければ、ここまで大きなプロジェクトの修正は出来ないです。
 discuss@ja.libreoffice.org

 ・メーリングリストの登録ページ:
  https://ja.libreoffice.org/get-help/mailing-lists/

【件名】デバッグのためにログを出力したい 2014年10月25日

Takeshi Abe さんのメールより引用
 $ ./configure --enable-debug
 $ make debug=true dbglevel=2
 がうまくいけば
 $ ./instdir/program/soffice --draw
 で実行できます。
 これで標準エラー出力に SAL_INFO のメッセージが出てくるはずです。

Isamu Mogi さんのメールより引用
 既にご存知だったらすみません。unit testがこける場合は下記コマンドを叩くと、
 ビルドが完了した後テストが省略されるので、開発ブランチが不安定な場合は
 使ってみると良いと思います。
 $ make build-nocheck

SATOH Fumiyasu さんのメールより引用
  find ./ -name "*" -exec grep 2>/dev/null -H "$1" {} +
 とすると、もっと効率的で速いですよ。
  find ./ -type f -exec grep -H "$1" {} +
 でいいような気も。
  find ./ -type f -exec grep -H -- "$1" {} +
 とすればハイフンで始まるパターンも検索可能。

Kohei Yoshida さんのメールより引用
 Visioのインポートはlibvisioというライブラリを使って賄っているのでそちら
 の方をいろいろデバッグしてみる方が早道です。libvisioについては以下のページ
 https://wiki.documentfoundation.org/DLP/Libraries/libvisio
 を参照下さい。

Jun NOGATA さんのメールより引用
 vsd2odg 0.2.0はかなり古いようですが大丈夫でしょうか?
 - http://sourceforge.net/projects/libwpd/files/writerperfect/
 grepした感じではxml2cmpを必要としているところは見つからず、ビルド時に
 必要なパッケージは、debian/controlに書いてあるので見てみましたが、それ
 らしいものもないようなので、今は使われていないよう?です。

Naruhiko Ogasawara さんのメールより引用
 LibreOfficeのソースコード検索システムといえばOpenGrok:
 http://opengrok.libreoffice.org/
 がありますが、オフラインの環境でも調べたいなら、GNU GLOBALは
 便利ですよね。


■英語でのメーリングリストでもお世話になりました。
 libreoffice@lists.freedesktop.org
 皆さん英語が母語ではないこともあるのか、私のめちゃくちゃな英語でも何とか返信頂けました。
 こちらの意思が伝わるよう、バックトレースや実際に動くコードや画像などのURLをメールに
 なるべく書くようにしました。

alonso さんのメールより引用
 LibVisio already defines a macro to print debug message : VSD_DEBUG_MSG 
 which must be activated when the libvisio’s module is compiled in debug mode.


■問題の箇所を突き止めるために
  いろいろソースコードを変更して一旦環境を壊してしまった。  NG
  出力データを、正常なものと比較               OK


■データを比較して気づいたこと、を試す
  矢印のサイズが小さすぎる場合、一定のサイズに引き上げる処理を追加しました。


■動いた!
・パッチのコミット
 小笠原さんの記事が大変参考になりました。大変ありがとうございます。
 http://d.hatena.ne.jp/naruoga/20141102/1414900882

 今回は libvisio をgitから取ってきて、そちらに修正箇所のコミットをプッシュしました。
 LibreOfficeとは別のプロジェクトですが、「Document Liberation Project」の一つです。
 http://www.documentliberation.org/projects/
 gitの使い方は、小笠原さんオススメの「Gitによるバージョン管理(オーム社)」で勉強中です。


■libreoffice@lists.freedesktop.org に、
 以下のライセンスについてのメールを投げた 2014年11月18日
-------------------------------------------------------------
All of my past & future contributions to LibreOffice may be

licensed under the MPLv2/LGPLv3+ dual license.


TANAKA Hidemune
-------------------------------------------------------------


■LibOに取り込まれた
 無事取り込まれた旨のメールを頂きました。
 LibO4.4のリリースまでには libvisio がリリースされ、LibOに取り込まれる予定です。


以上が大まかな流れです。
日本のLibreOfficeコミュニティに参加する際の、何かのヒントにでもなればと思います。
これからもっとLibreOfficeを盛り上げて参りましょうぞ。


おまけ)以下のページも参考になりますでしょうか。
 http://tanaka-cs.co.jp/libo_bug1.html
 http://tanaka-cs.co.jp/libo_bug2.html
 http://tanaka-cs.co.jp/libo_bug3.html
 http://tanaka-cs.co.jp/libo_bug4.html


前へ次へ