OpenOffice.org の独自コンパイル 西木 毅
はじめに OpenOffice.orgは製品として認知されつつある 一方でサポートができる企業はまだまだ少ない 障害時に対応できない 技術者を増やすには? 技術者視点のOpenOffice.orgの情報を増やす まずはソースコードからのコンパイル方法か (OSS的)
技術者が増えれば 利用者拡大と普及の好循環 技術者が増える サポートする企業も増える 利用者が増える 機能が増える カスタム化のニーズに対応できる
OpenOffice.orgの開発ニーズ 意外に多いカスタム化のニーズ 組み込み向け 高機能モバイル機器向け 特殊用途の専用機向け (ポイントは用途) 初等教育向け 子供向け (ポイントは予算) 障害者向け 視覚障害者向け 肢体不自由者(手、指)向け (ポイントは用途、予算)
実際にコンパイルをしてみる 標準的な手順で行う 環境構築 ライブラリ・コンパイラの入手とインストール ソースコードの入手 Configure 自分の好みのOpenOffice.orgを作る準備 コンパイル
コンパイル環境 パソコン環境 22インチモニタ付きで約9万円 マウスコンピュータ製2008年モデル Windows Vista Home CPU: Core 2 duo メモリ: 2GB
参考にしたサイト 次のサイトでほぼ全ての情報は入手可能 http://wiki.services.openoffice.org/wiki/Building_OOo_with_C ygwin_on_Windows http://wiki.services.openoffice.org/wiki/Windows 日本語では「OpenOffice.org独自ビルド」
環境構築1 まずは cygwin これがないと始まらない 必要パッケージは次の通り awk.exe を gawk.exe に入れ替えが必要 Category Archive: unzip, zip Category Devel : autoconf, bison, cvs, flex, gcc-g++, gperf, make,openssl-devel Category Libs: openssl Category Net: openssh, ncftp Category Perl: perl (Perl) Category Shells: rxvt, tcsh Category Utils: patch, gnupg Category Web: lynx, wget awk.exe を gawk.exe に入れ替えが必要 Teraterm の cygterm があると便利
環境構築2 開発キット、ライブラリの準備 Visual C++ 2008 Express JDK Apache-ant Windows SDK NSIS(フリーのインストーラ構築ソフト)
ソースコードの取得 cvs/subversion で取得する Subversion がお勧め Cygterm でログイン 次のコマンドを実行 svn co svn://svn.services.openoffice.org/ooo/tags/DEV300_m42
追加ファイル Externalファイルを入手 unicows.dll、dbghelp.dll、gdiplus.dll、 instmsiw.exe、instmsia.exe OpenOffice.orgソース下の external ディレクトリに置く
ソースコードから見たOpenOffice.org いったいどれぐらいの規模なのか ファイル数 173,927個 ファイルサイズ総数 3,886,257バイト(約3.7Gバイト)
ルートディレクトリ 機能別に193個のディレクトリ
コード数 OpenOffice.orgのC++ファイル C++のコード数 625万行(10,758個) コメントの除外はしていない その他、Pythonなどのファイルがある 他の大規模ソフトのコード数 Windows NT 400万行 Windows 95 1,500万行 Windows XP 3,500万行 Windows Vista 5,000万行 Linux 1,000万行
configure Cygwin でソースの下にある config_office に移動 Configure を実行する export PFILES=/cygdrive/c/Program\ Files export MSVC=$PFILES/Microsoft\ Visual\ Studio\ 9.0/VC export MSSDK=$PFILES/Microsoft\ SDKs/Windows/v6.1/ export JDK_HOME=$PFILES/Java/jdk1.6.0_11 ./configure \ --with-lang="ja" \ --disable-directx \ --disable-activex \ --disable-atl \ --disable-mozilla \ --with-cl-home="$MSVC" \ --with-asm-home="$MSVC" \ --with-frame-home="$MSSDK" \ --with-midl-home="$MSSDK/Bin" \ --with-psdk-home="$PFILES/Microsoft\ SDKs/Windows/v6.1" \ --with-csc-path=/cygdrive/c/Windows/Microsoft.NET/Framework/v3.5 \ --with-jdk-home="$JDK_HOME" \ --with-ant-home=/ant/ \ --with-use-shell=bash
コンパイル ソースのルートに移動 bootstrap スクリプトを実行 ./bootstrap 環境変数のスクリプトを読み込む source winenv.set.sh instsetoo_native ディレクトリに移動 cd instsetoo_native コンパイルコマンドを実行 makeではなくbuildコマンド # build --all -P4
ビルド時のTips プロセス数を変更 -P4 を P8 など コア数が複数あるなら有効 Dual Core などなら -P4 が最適らしい Virus 対策ソフトのスキャン対象から外す 対象になっていると非常に時間がかかる
コンパイル時間 1日(24時間)は必要 途中でエラーで止まったので正確な時間は不明 ファイル数が多いのでHDDの速度が上がると 早くなるかも
エラー箇所 ハングル、中国語変換の機能の箇所 ラベル用文字がBOM無しUTF8だった MS C++ は BOM無しUTF8を解釈できない
オリジナルOOo バージョン情報に名前が入る
まとめ 自宅PCでコンパイルを実施 環境整備に時間がかかった ただし作業内容はダウンロードとインストール 意外に簡単に出来た印象 開発に興味がある人はぜひ挑戦を Linux版とか、Mac版とか OOo開発技術者の増加を期待