Upload
masataka-kondo
View
589
Download
4
Embed Size (px)
Citation preview
1LibreOffice Study Party around Hamanako / 2016.1.24
LibreOffice をビルドしてみよう
LibreOffice Study Party around HamanakoMasataka KONDO : LibreOffice Japanese TeamJanuary 24th, 2016
2LibreOffice Study Party around Hamanako / 2016.1.24
なぜビルドが望まれるのか
「誰でもビルドできる」ことで開発の活性化を目指す
ビルドしやすい開発環境入手容易なコンパイラその他の情報共有ビルド手順の簡略化 e.g. autogen.sh
ソースコードの最適化脆弱性にいちはやく対応するアルゴリズムなどの見直しによる高速化
カスタマイズ・フォークの推進フォークビルドの機能が本家に逆輸入 ( されるかも )
3LibreOffice 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.
4LibreOffice 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
5LibreOffice Study Party around Hamanako / 2016.1.24
TDF の Wiki に情報がまとまってます
ビルドに限らずいろいろな情報はここからhttps://wiki.documentfoundation.org/Main_Page
6LibreOffice Study Party around Hamanako / 2016.1.24
ビルド情報は「 Development 」から
Linux/BSD, Windows, Mac OS X, Android もありhttps://wiki.documentfoundation.org/Development
7LibreOffice 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
8LibreOffice Study Party around Hamanako / 2016.1.24
Q : オフラインではビルドできないのですか?
手順の中にソースコードを入手する工程が含まれますまた、 make 起動後も外部ツール・ライブラリを取りに行っています
... ので、基本的にネットワーク接続が必要ですが
画面に「 [build CXX] ... 」のようなのが表示されていれば
以降は外部へのアクセスを行わないのでオフラインでも OK( 実際にこの手順を踏んで出先でコンパイルもしていました )
9LibreOffice Study Party around Hamanako / 2016.1.24
Q : 毎回 git clone する時間が勿体無いんですが
Wiki 等では git を使える前提として特に説明がありません
初回は git clone でソースコードを入手しますが
2回目以降は git pull で対応可能ですテストだけならリリース版のブランチを使う手もあります後述するビルド手順は都合によりリリースブランチを使用します
% cd ~/libreoffice% git pullremote: Counting objects: 17637, done.Receiving objects: 34% (2170/6381), 644.00 KiB|66.00 KiB/s...
(~/libreoffice に Currentのソースコードがあるとして )
10LibreOffice 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 広島の発表資料参照
11LibreOffice 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 ですメニューなどへの登録はディストロごとで違うので省略私の資料は「自力でライブラリをインストール」のため非推奨
12LibreOffice Study Party around Hamanako / 2016.1.24
Windowsでのビルド手順
手順が確立され、また最初から開発環境が含まれている LinuxやMac OS Xでは比較的楽にビルドが実現可能です。一方、Windowsでは開発環境を準備する必要があり、まずそこでつまづく人が多いようです。今回の発表は自分がつまづいた経験をもとに話をさせていただきます。
13LibreOffice 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 です
( アクセス速度に効いてくるのでそのあたりはまぁ色々
14LibreOffice Study Party around Hamanako / 2016.1.24
以降、 Wiki の情報も参考にしてください
基本的にここに書かれてる内容に沿っていけば成功するはずhttps://wiki.documentfoundation.org/Development/BuildingOnWindows
15LibreOffice Study Party around Hamanako / 2016.1.24
(1) Cygwin のインストール
コンパイルの実行環境として、各種コマンドを呼び出す関係上Cygwin が必要
32bit 環境、 64bit 環境に合わせたバイナリを適用
「 -P 」オプションでインストールするコマンドを指定
32bit と 64bit ではパッケージ名が微妙に違う点に注意
詳細は Wiki を確認してください
setup-x86_64.exe -P autoconf -P automake -P bison ^ -P cabextract -P doxygen -P flex -P gcc-g++ ^ -P git -P gnupg -P gperf -P make -P mintty ^ -P nasm -P openssh -P openssl -P patch -P perl ^ -P python -P python3 -P pkg-config -P rsync ^ -P unzip -P vim -P wget -P zip -P perl-Archive-Zip
17LibreOffice Study Party around Hamanako / 2016.1.24
(2) JDK のインストール
オプションで Java 不要にすることも可能ですが、
必要になるケースも多いので (Base の運用など ) 入れます
64bit 版をビルドする際には 64bit 版の JDK を選択します
18LibreOffice Study Party around Hamanako / 2016.1.24
(3) Visual Studio 2013 のインストール
無料で使える Community 版をインストールします何かと2015をインストールさせようとするので次ページ以降に注意してインストールを進めてください
22LibreOffice 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
23LibreOffice Study Party around Hamanako / 2016.1.24
(5) Java関連ツールのインストール
具体的には「 Ant 」と「 junit 」をインストールします
mkdir -p /cygdrive/c/sourcescd /cygdrive/c/sourceswget 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
24LibreOffice 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
この部分は好きな名前をつけていただいて構いません(日本語ディレクトリ名は保証しませんが )
25LibreOffice 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
26LibreOffice 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-cygmv apt-cyg /usr/local/bin/
27LibreOffice 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
このオプションはなくてもよい
28LibreOffice Study Party around Hamanako / 2016.1.24
(8') 代替手段で 5.0.4.2 のソースを使います
8月の Hackfest :安部さんの資料「なぜかエラーがでて止まることがあります」対応するための方法(1) 気にせずに再度make を実行 : 通ればラッキー !!(2) 他の環境でも落ちる / 他の環境では通ることを確かめる
仮想マシンを作りそこでビルドする(3) Fix された実績のあるソース (= リリース版 ) を使う
時間がないので (1) がダメであることを確認したのち、
(3) を採用することにします
結論から言うと (1) では突破できませんでした ...orz
30LibreOffice Study Party around Hamanako / 2016.1.24
これでめでたくビルドが通りました
時期をみて current には再挑戦の予定
いよいよコードのナカミを見なきゃいけないですよねー ...
31LibreOffice Study Party around Hamanako / 2016.1.24
まとめ
開発の第一歩としてのビルドを体験することは重要最近のソフトのビルド方法を知っておくgit に慣れて、一通りのコマンドを使えるようにする
次の段階として : ソースコードリーディングイージーハックいずれにしても、ビルドが通せることが必要になる
Mac OS X / Linux いずれも比較的ビルドは楽
Windows の場合は Visual Studio の選択が重要トラップがそこかしこに仕掛けられてるので要注意 autogen.sh はむしろ素直に通った感じがします (小並感
32LibreOffice 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!!