LibreOffice Hackfest Online #2 に参加して LibreOffice をbuildした

最近毎週水曜日に開催されている「LibreOffice Hackfest Online #2」に参加してみました．
今回は#2で#0から始まったので3回目．

LibreOffice Hackfest Online #2 – connpass

Jitsi Meet で集まってYoutubeLive での配信も行っていました．配信された動画はアーカイブされていて以下で公開されています．

LibreOffice Hackfest Online #2 LibreOfficeのビルドをしてみよう – YouTube

今回はLibreOffice のビルドをする回でした．自分は確か以前LOOLを試すためにbuildして以来で2,3年ぶりかな?デスクトップ版は初めてです．
いつも使っている環境はLinuxのDebian sid amd64 環境なのでここでbuildすることに．

Building LibreOffice on Linux and *BSD systems: Tips and Tricks – The Document Foundation Wiki

当日だけだとsourceをとってくるだけで終わってしまうだろうと前日までに source の clone と build-dep でbuild に必要なパッケージを導入しておきました．

$ git clone git://anongit.freedesktop.org/libreoffice/core
$ sudo apt build-dep libreoffice

そして当日は autogen.sh を実行して依存関係に失敗，以下のあたりを追加で導入しました．

$ sudo apt install git ccache junit4 gstreamer1.0-libav libkrb5-dev nasm graphviz libpython3-dev

Linux Build Dependencies – The Document Foundation Wiki

その後，再度 autogen.sh を実行．

$ ./autogen.sh

makeを掛けるとHackfest に利用しているJitsi Meets に影響が出そうです．てことで影響が出たら中断するつもりでこんな感じで優先度を下げて実行しました．問題なさそうなのでそのまま放置しておきました．

$ time nice -n 19 make -j1

Hackfest が終わってもまだ終わる気配はなかったのでそのままおいときます．
そして翌朝やっと終了していました．

make は20:06:23〜翌日の06:29:35 まで掛かっていました．優先度を下げていたとはいえかなり時間がかかりました．
時間がかかったのはCPUの温度が上がってCPUスロットリングが効いて0.8GHzとかにクロックが落ちていたのが大きそうです．

早速実行すると起動して利用できそうです．

$ instdir/program/soffice

しかしUI言語がUSAしか選べません．

恐らく autogen.sh の実行時にオプションがなかったせいだと思います．

$ ./autogen.sh --help|grep -i with-lang -A 13
--with-lang="es sw tu cs sk"
Use this option to build LibreOffice with additional
UI language support. English (US) is always included
by default. Separate multiple languages with space.
For all languages, use --with-lang=ALL.
--with-locales="en es pt fr zh kr ja"
Use this option to limit the locale information
built in. Separate multiple locales with space. Very
experimental and might well break stuff. Just a
desperate measure to shrink code and data size. By
default all the locales available is included. This
option is completely unrelated to --with-lang.

Affects also our character encoding conversion
tables for encodings mainly targeted for a
particular locale, like EUC-CN and EUC-TW for
zh, ISO-2022-JP for ja.

Affects also our add-on break iterator data for
some languages.

For the default, all locales, don't use this switch at all.
Specifying just the language part of a locale means all matching
locales will be included.

ということで --with-lang=ALL と --with-locales="en es pt fr zh kr ja" で多国言語対応と，--with-package-format='deb' でDebian package 書き出し，それに依存して --enable-epm を付けてみました．

$ ./autogen.sh --with-package-format='deb' --enable-epm --with-lang=ALL --with-locales="en es pt fr zh kr ja"

そして make．

今回は結果をTwitterに投稿するようにしてみました．

$ /bin/time -o /tmp/time -f "%E 位掛かりました" nice -n 19 make -j1 && echo "SAYAKAによる自動投稿: LibreOfficeのbuildが正常に 終わった みたいです．$(echo ;cat /tmp/time)" || echo "SAYAKAによる自動投稿: LibreOfficeのbuildが失敗したみたいです($?)$(echo ;cat /tmp/time)" | sayaka --post

しかし6時間46分程してから失敗><

SAYAKAによる自動投稿: LibreOfficeのbuildが失敗したみたいです(2)
Command exited with non-zero status 2
6:46:38 位掛かりました

logを見るとtranslationsのcloneをずっとやっていて回線が不安定になったかタイムアウトかそんな感じで途中でcloneに失敗して転けていました．

Cloning into '/home/matoken/src/core/translations'...
error: RPC failed; curl 56 GnuTLS recv error (-9): Error decoding the received TLS packet.

再度実行してみると正常終了しました．

SAYAKAによる自動投稿: LibreOfficeのbuildが正常に 終わったみたいです．
6:36:46 位掛かりました

起動してみると日本語も選べます :)

$ /instdir/program/soffice

せっかくbuildできたのでこのLibreOfficeDev 7.0.0.0.alpha0+ の Impress でスライドを作ってみました．60ページほどのスライドをざっと書いてみましたが特に問題なく普通にかけてしまい拍子抜けしてしまいました．

View more on edocr

VPSサーバでもbuild

ローカルのDebian sid amd64環境ではうまく行ったけど回線やPCの問題で時間がかかります．VPSサーバでbuildしてからバイナリパッケージをダウンロードしたほうが早いのではと試してみました．
このサーバはドイツのニュルンベルクでホストされているContabo社のVPS300です．スペック(CPU 2Core/RAM 4GB/HDD 300GB)の割のとても安い(€3.99/月)けど回線が細い感じのサーバです．

ドイツの格安VPS(Contabo VPS 300) を借りてセットアップ済サーバのOSを入れ替える – matoken’s meme

OSはDebian 10(buster) amd64を導入してあります．依存関係が少し手間取りましたが後はスムーズに&手元のPCよりずっと速く終わりました．

必要なパッケージの導入

$ sudo apt build-dep libreoffice
$ sudo apt install libperl-dev libarchive-zip-perl javacc gperf python-dev bison flex ant doxygen ccache gstreamer1.0-libav libkrb5-dev nasm

sourceの入手

$ time git clone git://anongit.freedesktop.org/libreoffice/core
:
real 35m26.954s
user 8m5.441s
sys 1m1.694s

autogen(--with-locales も`ALL` にしてみた)

$ time ./autogen.sh --with-package-format='deb' --enable-epm --with-lang=ALL --with-locales=ALL

make

$ time make -j$(nproc)
:
real 137m3.246s
user 59m6.001s
sys 25m13.390s

その後も git pull && make とかして 7.0.0.0.alpha1+ にすることも出来ました．

buildしたDebianパッケージはいつまでかわからないけどここで公開しています．

Index of /LibODev

てことでどうにかビルドできました．build後のsource ディレクトリ以下は20GB近く．build-depでも1GB以上消費しました．ディスクも結構食いますね．

相談しながら引っかかったら聞くという場があるのは助かりますね．今回の機会がなかったら自分でbuildしなかったと思います．

次回の「LibreOffice Hackfest Online #3」は05/13(Wed)に開催で以下のページから申し込みが出来ます．jitsi Meetでの開催で，YoutubeLiveでの配信も行われる予定です．

LibreOffice Hackfest Online #3 – connpass 申し込みページ

LibreOffice Hackfest Online #3 – YouTube YoutubeLiveページ

LibreOffice日本語チーム – YouTube Youtubeチャンネルページ