1. 1
LibreOffice Study Party around Hamanako / 2016.1.24
LibreOffice をビルドしてみよう
LibreOffice Study Party around Hamanako
Masataka KONDO : LibreOffice Japanese Team
January 24th, 2016
2. 2
LibreOffice Study Party around Hamanako / 2016.1.24
なぜビルドが望まれるのか
「誰でもビルドできる」ことで開発の活性化を目指す
ビルドしやすい開発環境
入手容易なコンパイラその他の情報共有
ビルド手順の簡略化 e.g. autogen.sh
ソースコードの最適化
脆弱性にいちはやく対応する
アルゴリズムなどの見直しによる高速化
カスタマイズ・フォークの推進
フォークビルドの機能が本家に逆輸入 ( されるかも )
3. 3
LibreOffice Study Party around Hamanako / 2016.1.24
仮想環境構築のすすめ
バグレポートの報告など英語環境が必要になる状況
ログアウトだけで言語を切り替えられるのは Linux だけ
「ビルドが最も容易な環境」を手元に用意
全環境ビルドに成功しましたが、依然として Linux が最も楽
( バグレポートの例 )
Title : Writer crashes when push “Navigator” button
with “Gallery” opened.
Build 5.0, with Linux Mint 17.1(64bit)
(1) Open Writer
(2) Open “Gallery” from sidebar
(3) Push “Navigator” button
(4) Writer is crashed.
This crashing was also represented with
both of MacOS 10.10, Windows/64bit.
4. 4
LibreOffice Study Party around Hamanako / 2016.1.24
基本的な進め方
基本的に
(1) git clone で LibreOffice のソースコードを入手
(2) 設定ファイルを走らせる (autogen.sh)
(3) コンパイラでビルド
の流れですが、 Windows の場合 (3) の事前準備が大変
処理をするシェル環境、ツール→ Cygwin
コンパイラ → Visual Studio 2013 Community
(Linux や Mac OS X では最初から用意されている )
Linux および Mac OS X は OSC 広島で報告した資料参照
http://www.slideshare.net/masatakakondo16/libreoffice-in-osc-2015-hiroshima-52982186
5. 5
LibreOffice Study Party around Hamanako / 2016.1.24
TDF の Wiki に情報がまとまってます
ビルドに限らずいろいろな情報はここから
https://wiki.documentfoundation.org/Main_Page
6. 6
LibreOffice Study Party around Hamanako / 2016.1.24
ビルド情報は「 Development 」から
Linux/BSD, Windows, Mac OS X, Android もあり
https://wiki.documentfoundation.org/Development
7. 7
LibreOffice Study Party around Hamanako / 2016.1.24
Q : コンパイルにかかる時間は?
コード規模の大きなソフトなので不安なのはわかります。
長くとも朝出かける前に仕掛けたら、夕方帰宅時に
出来上がっている感じです。最近のマシンなら数時間も
現実的な結果です。
ASUS X550ZE ではだいたい 4 時間で完了しました
(Memory 4GB→16GB に増設 / HDD→SSD への換装済 )
OSC 広島で報告したビルド時間計測結果 :
(ASUS U38N : A10-4655M, 10GB RAM / 500GB SSD)
% time make 2>&1 | tee build.log
real 262m42.345s
user 920m58.154s
sys 71m4.023s
8. 8
LibreOffice Study Party around Hamanako / 2016.1.24
Q : オフラインではビルドできないのですか?
手順の中にソースコードを入手する工程が含まれます
また、 make 起動後も外部ツール・ライブラリを取りに行っています
... ので、基本的にネットワーク接続が必要ですが
画面に「 [build CXX] ... 」のようなのが表示されていれば
以降は外部へのアクセスを行わないのでオフラインでも OK
( 実際にこの手順を踏んで出先でコンパイルもしていました )
9. 9
LibreOffice Study Party around Hamanako / 2016.1.24
Q : 毎回 git clone する時間が勿体無いんですが
Wiki 等では git を使える前提として特に説明がありません
初回は git clone でソースコードを入手しますが
2回目以降は git pull で対応可能です
テストだけならリリース版のブランチを使う手もあります
後述するビルド手順は都合によりリリースブランチを使用します
% cd ~/libreoffice
% git pull
remote: Counting objects: 17637, done.
Receiving objects: 34% (2170/6381), 644.00 KiB|66.00 KiB/s
...
(~/libreoffice に Current のソースコードがあるとして )
10. 10
LibreOffice Study Party around Hamanako / 2016.1.24
Mac OS X におけるビルドの概要
Development Wiki をご参照ください
https://wiki.documentfoundation.org/Development/BuildingOnMac
そこで推奨されている「 LODE 」を使用します
説明の手順通りですが、2ヶ所問題になる箇所が存在します
コンパイラが LLVM のため、 ccache が悪さをします
autogen.sh 実行時に「 --disable-ccache 」を付加
ユニットテストで止まるケースが存在します
Oracle JDK の他に Apple の JRE が必要なケース有
.bash_profile が必要になるのでパスを通す際には要注意!
ビルド完了したら、 instdir/ にある LibreOfficeDev.app を
アプリケーションにコピーします
詳細は前述の OSC 広島の発表資料参照
11. 11
LibreOffice Study Party around Hamanako / 2016.1.24
Linux におけるビルドの概要
こちらも Development Wiki をご参照ください
https://wiki.documentfoundation.org/Development/BuildingOnLinux
Build dependencies の項目には各ディストリビューションごと
の依存性解消ステップが記述されています。
例えば、 openSUSE では zypper を呼び出します
BSD (FreeBSD / NetBSD / Dragonfly) にも対応しています
あえて自力でライブラリをインストールすることも可能ですが
推奨はしません ( 理解を深めたいならやってもよいと思います )
インストールは sudo make install です
メニューなどへの登録はディストロごとで違うので省略
私の資料は「自力でライブラリをインストール」のため非推奨
12. 12
LibreOffice Study Party around Hamanako / 2016.1.24
Windows でのビルド手順
手順が確立され、また最初から開発環境が含まれてい
る Linux や Mac OS X では比較的楽にビルドが実現
可能です。一方、 Windows では開発環境を準備する
必要があり、まずそこでつまづく人が多いようです。今
回の発表は自分がつまづいた経験をもとに話をさせて
いただきます。
13. 13
LibreOffice Study Party around Hamanako / 2016.1.24
基本的な進め方
Windows については、八木さんの資料が参考になります。
http://www.slideshare.net/tomofumiyagi/libreoffice-buildytmkndupdate
http://www.slideshare.net/tomofumiyagi/libreoffice-buildytmkndshortver-29235268
ここでは、 Windows でビルドを行う際の
「ハマりどころ」を説明していきます。
ディスクの空き容量は 100GB 程度を目安にしてください。
特に Visual Studio の必要容量が問題となります
( 強制的に C: ドライブにインストールされるという問題があります )
ソース・作業スペースは外部ディスクでも OK です
( アクセス速度に効いてくるのでそのあたりはまぁ色々
14. 14
LibreOffice Study Party around Hamanako / 2016.1.24
以降、 Wiki の情報も参考にしてください
基本的にここに書かれてる内容に沿っていけば成功するはず
https://wiki.documentfoundation.org/Development/BuildingOnWindows
17. 17
LibreOffice Study Party around Hamanako / 2016.1.24
(2) JDK のインストール
オプションで Java 不要にすることも可能ですが、
必要になるケースも多いので (Base の運用など ) 入れます
64bit 版をビルドする際には 64bit 版の JDK を選択します
18. 18
LibreOffice Study Party around Hamanako / 2016.1.24
(3) Visual Studio 2013 のインストール
無料で使える Community 版をインストールします
何かと2015をインストールさせようとするので次ページ以降
に注意してインストールを進めてください
22. 22
LibreOffice Study Party around Hamanako / 2016.1.24
(4) TDF 版 GNU make のインストール
Cygwin の make ではかなり遅くなるそうです
これによってビルドの閾値がぐっとさがりました
これ以降の操作は Cygwin Shell から行います
mkdir -p /opt/lo/bin
cd /opt/lo/bin
wget http://dev-www.libreoffice.org/bin/cygwin/make-85047eb-
msvc.exe
mv make-85047eb-msvc.exe make
chmod a+x make
23. 23
LibreOffice Study Party around Hamanako / 2016.1.24
(5) Java 関連ツールのインストール
具体的には「 Ant 」と「 junit 」をインストールします
mkdir -p /cygdrive/c/sources
cd /cygdrive/c/sources
wget https://archive.apache.org/dist/ant/binaries
apache-ant-1.9.5-bin.tar.bz2
tar -xjvf apache-ant-1.9.5-bin.tar.bz2
wget http://downloads.sourceforge.net/project/junit
junit/4.10/junit-4.10.jar
24. 24
LibreOffice Study Party around Hamanako / 2016.1.24
(6) ソースコードの入手
Wiki の手順に従って Current のソースを入手します
時間がかかりますがご了承ください
( 回線によりますが 2 〜 3 時間程度 )
cd /cygdrive/c/sources
git clone git://gerrit.libreoffice.org/core libo-core
この部分は好きな名前をつけていただいて構いません
( 日本語ディレクトリ名は保証しませんが )
25. 25
LibreOffice Study Party around Hamanako / 2016.1.24
(7) autogen.sh による makefile の作成
他 OS の場合と同様にまず autogen.sh スクリプトで設定を
行います。
カレントディレクトリにパスが通ってないので面倒ですが
フルパスでの指定が必要になります (UNIX shell が
デフォルトで存在しない Windows の悪い面ですね )
Cygwin だと ^P で履歴は辿れるのでやり直しは簡単です
/cygdrive/c/sources/libo-core/autogen.sh
--with-external-tar=/cygdrive/c/sources/lo-externalsrc
--with-junit=/cygdrive/c/sources/junit-4.10.jar
--with-ant-home=/cygdrive/c/sources/apache-ant-1.9.5
--enable-pch --disable-ccache
--disable-activex --disable-atl
26. 26
LibreOffice Study Party around Hamanako / 2016.1.24
失敗事例 : autoconf がないよ?
Cygwin インストール時に -P オプションで指定してたコマンドが
抜けていた?→いまさら再検証はできない
apt が使えるので、コマンドを追加可能にします
Linux Mint Cinnamon/64bit で引っかかった箇所なので
落ち着いて対処ができました ...( 苦笑 )
wget https://raw.githubusercontent.com/transcode-open/
apt-cyg/master/apt-cyg
chmod 755 apt-cyg
mv apt-cyg /usr/local/bin/
27. 27
LibreOffice Study Party around Hamanako / 2016.1.24
(8) いよいよビルドに入ります !!
先ほどの部分を除けば autogen.sh は普通に通るはずですので
いよいよ make をおこないます
手順 (4) でインストールした TDF 配布版の make を指定します
最初はライブラリ類を wget で入手するので時間がかかります
1/20 時点での current はエラーが出て止まります (^^;
/opt/lo/bin/make gb_COLOR=1
このオプションはなくてもよい
30. 30
LibreOffice Study Party around Hamanako / 2016.1.24
これでめでたくビルドが通りました
時期をみて current には再挑戦の予定
いよいよコードのナカミを見なきゃいけないですよねー ...
31. 31
LibreOffice Study Party around Hamanako / 2016.1.24
まとめ
開発の第一歩としてのビルドを体験することは重要
最近のソフトのビルド方法を知っておく
git に慣れて、一通りのコマンドを使えるようにする
次の段階として :
ソースコードリーディング
イージーハック
いずれにしても、ビルドが通せることが必要になる
Mac OS X / Linux いずれも比較的ビルドは楽
Windows の場合は Visual Studio の選択が重要
トラップがそこかしこに仕掛けられてるので要注意
autogen.sh はむしろ素直に通った感じがします ( 小並感
32. 32
LibreOffice Study Party around Hamanako / 2016.1.24
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
(unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos
and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.
ご健闘をお祈りします
Let's do it yourself!!