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
前へ / 次へ