32
1 LibreOffice Study Party around Hamanako / 2016.1.24 LibreOffice をビルドしてみよう LibreOffice Study Party around Hamanako Masataka KONDO : LibreOffice Japanese Team January 24th, 2016

LibreOfficeをビルドしてみよう(Windows)

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

16LibreOffice Study Party around Hamanako / 2016.1.24

Cygwin の Website から入手します

32bit

64bit

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をインストールさせようとするので次ページ以降に注意してインストールを進めてください

19LibreOffice Study Party around Hamanako / 2016.1.24

トラップその 1

Wiki のインストーラへのリンクは 2015 です

20LibreOffice Study Party around Hamanako / 2016.1.24

トラップその 2

ダウンロードページのいちばん目立つボタンも 2015 です

21LibreOffice Study Party around Hamanako / 2016.1.24

おめでとう! 正しいブツを選べたようだね

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

29LibreOffice Study Party around Hamanako / 2016.1.24

リリースブランチのソースはここ

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!!