短期集中連載? LibreOfficeをWindowsで開発してみよう:補足その②パッチの提出 and more...
GWの間にLibO開発できる環境をWindowsで作ろうの連載をやりました。
そして、修正パッチ作って投げたのでその気づいた点を書いてたら長くなったので分割したのが:
この記事はその続きで、
- ユニットテストをどう書いてどう実行するか
- パッチをどうやって送るか
- ヘルプの更新の仕方
のうち 2. と、3. をほんのちょっと……です。
2. パッチをどうやって送るか
こいつについては例によって公式にとても丁寧に説明があるのでそれに従えばいいです。
LibreOfficeのソースコードは、コードレビューシステム Gerrit で管理されてます。
https://gerrit.libreoffice.org/:embed:site
Gerritの設定についてのドキュメントはこちら。
まずはGerritにアカウント作るところからですが、私大昔にアカウントだけは作ってあったのでそこは省略。アカウント設定で「ユーザー名」を確認、それとSSH鍵も登録しておきます。
そしたらあとは簡単で、 ./logerrit setup
すればよいはず……だったんですが、なんか私はうまくいかなくて (~/.ssh/confg
が正しく更新されなくて)、手で config 書いたらテスト通りました。
そしたら次はパッチの提出です。ドキュメントはこちら。
やることは、masterから分岐して変更コミットを持つブランチにて、
./logerrit submit master
ってするだけです。 前回の記事にもちろっと書きましたがCIこけたりして再度コミットやり直したりしたのですが、 そのときはamendまたはrebaseでコミット改変すればOK。コミットコメント見ると:
Change-Id: ???????056191
みたいなのがついてますが、Gerrit上の変更はこいつが維持されると反映されるみたい。
で、提出してJenkins通ったのち。 どうも自信がなかったのですが、たとえばコード修正して、その修正に対応したテストケース書いて、みたいな変更のとき、 コミットは分割するものかそれとも一つにまとめるものか悩ましかったのです。 ただ、ほかの人のコミットを見るとあんまり分割されてなさそうなので、えいっとrebaseで一つにしちゃいました。 このときは最後のコミットの Change-Id を残せばいいみたいですね。
こうやって再提出するときも:
./logerrit submit master
するだけです。簡単ですね。
それから、「こういう書き方でいいのかちょっと見てくれる?」みたいなときに、
Work In Progressなままあげるって機能もあって、その場合は ./logerrit submit-wip master
とすればいいですよと。
WIPで上げた変更をちゃんとした変更に昇格する方法もあるのかもしれないですが、 私は、この変更とは別に別にsubmitしちゃって、WIPのほうはabondon(取り下げ)しちゃったので、 よくわからないんですよね。 その点は各自適当にアレしてくださいませ。
3. ヘルプの更新の仕方
さてさて。
今はレビュー待ちでドキドキしてるところですが、それで終わりではありません。
今回は、仕様変更したのですが、この仕様はヘルプにも記述がありまして:
こいつも直さないといけないじゃないですか。
で、ヘルプ入りでビルドしないとだめなのかなー、と、
./autogen.sh
の実行時オプションに --with-help
を指定したんですけど、
今の時点では、これはいらんかったのではと思ってます。
というのは、LibOのソースツリーにおいてヘルプは helpcontent2
という submodule になってまして、
submoduleなので、このツリー上で変更したところでコミットするすべがないし、
Gerritにおけるパッチ管理も別。
いや、
ここにあるやりかたをすればいけるのかもしれないですが、
なにせ --with-help
するとビルド時間がめちゃくちゃ伸びるのです。
だったら、別のツリーとしてcloneして、そっちで作業した方がいいんじゃないか……? というのが、 今のところ思ってるところです。
最後に小ネタ: ./autogen.input
書こう
短期集中連載の、たとえば第1回とか第3回とかで、./autogen.sh
に引数こんなふうに渡して実行してました。
./autogen.sh \ --with-lang=ALL \ --enable-64-bit \ --with-jdk-home=/cygdrive/c/Program\ Files/AdoptOpenJDK/jdk-8.0.252.09-hotspot/ \ --enable-debug
それより、同じディレクトリに autogen.input
ってテキストファイルを転がしておく方がベターです。こんな感じ。
--with-lang=ja en-US ko zh-CN zh-TW --enable-64-bit --with-jdk-home=/cygdrive/c/Program\ Files/AdoptOpenJDK/jdk-8.0.252.09-hotspot/ --enable-debug
このファイルがあれば、 ./autogen.sh
と引数なしで実行したとき、ファイルに記載したパラメータありで実行されます。
autogen.input
の書き方はみたまんまなのですが一点だけ注意、--with-lang
みたいに複数のパラメータを取るとき、
コマンドラインで渡すときは ""
でクォートしますが、
autogen.input
の場合はクォートするとエラーになります。
直前に実行したautogenの引数は autogen.lastrun
ってファイルに保存されてるので、
こいつをもとに作るのがいいかもですね。
そんなわけで開発チャレンジはまだ始まったばかりですが、 この記事が、自分も開発やってみよう! ビルドするだけじゃなくてバグ直したり開発したりしてみよう! と思う人の参考になればいいなと思います。
LibreOffice Asia Conference 2019: LibreOffice CJK Bugs, Fixes, and Stories
(先日も紹介しましたけど)去年のLibreOffice Asia Conference 2019でMarkが言ってたように、 CJKの問題は非CJKな民が正しい動作を理解し修正することがとても難しいので、 我々自身で直せるものは直していきたいですよね。
求む! 同志!