ビルドの概要
ビルドは以下の手順で進めます。- ビルドに必要なものを入手し適切な場所に用意します。
- 日本語環境でのビルドのための修正を行います。
- ビルドの環境設定を行います。
- ビルドの実行を行います。
ビルドに必要なもの
ハードウェア
ハードウェアの条件は英語版ドキュメントによれば以下の通りです。- Processor : Intel Pentium II
- RAM : 128Mバイト以上推奨
- Hard Disk : 4G Byte以上の空き容量 (crashdumpのビルドを有効にした場合は8G Byte以上が必要)
ソフトウェア
Windows版をビルドするには以下のソフトウェアが必要になります。すべてオープンソースでビルドできるのが理想的なのですが、残念ながらそうはいきません。最初の二つはオープンソースでなく、しかも有償のソフトです。
- Windows NT 4.0 SP3 もしくはそれ以降
筆者の環境は、Windows XP Professional(SP2)です。
- Microsoft Visual C++ .NET 2003
筆者の環境は J2SDK 1.4.2_06です。
- Cygwinツールキット
Windowsで*unix*互換のツールを動かす環境とコマンドツール群のキットです。
Cygwin DLLのversionが1.5.10以上のものが必要となっていますが、最新のものを入手すればほぼ大丈夫でしょう。
Cygwinの中で必要となる主なものは、bash、tcsh、bison、flex、make、gawk、gcc、gzip、patch、tar、perl、unzip、zipなどです。
cvsリポリトジからソースファイルを入手する場合にはcvsも必要となります。 デフォルトのままではインストールされないものもあるのでよく確認してインストールして下さい。
また、インストールの際に改行コードの扱い方の選択をするところがありますがデフォルト(Unix)のままでインストールして下さい。
シンボリックリンクされたコマンドに関して
4NTシェルではそれらのシンボリックリンクが扱えない為、configureではビルドの際に使用するコマンドがシンボリックリンクの場合、エラーではじくようにしています。
その為、該当のファイルをリンク先のファイルからコピーして、シンボリックリンクではない状態にしておく必要があります。
Cygwinのシェルで、以下の様に実行し、それらを修正して下さい。
cd /usr/bin && for files in awk.exe tar.exe gunzip.exe; do cp -p $files $files.new && rm $files && cp -p $files.new $files && rm $files.new; done
Cygwinのzipに関して
バージョン2.3-1以前のものでは、正常にセットアップできるインストールセットが作成できません。
1. cygcheck -c zipとしてバージョン2.3-2以上である事を確認して下さい。
$ cygcheck -c zip Cygwin Package Information Package Version zip 2.3-2 Use -h to see help about each section2. zip -vとした時に以下のように表示される事を確認して下さい。
Copyright (C) 1990-1999 Info-ZIP
Type 'zip "-L"' for software license.
This is Zip 2.3 (November 29th 1999), by Info-ZIP.
Currently maintained by Onno van der Linden. Please send bug reports to
the authors at Zip-Bugs@lists.wku.edu; see README for details.
Latest sources and executables are at ftp://ftp.cdrom.com/pub/infozip, as of
above date; see http://www.cdrom.com/pub/infozip/Zip.html for other sites.
Compiled with gcc 2.95.3-5 (cygwin special) for Unix (Intel 386) on May 12 2002.
Zip special compilation options:
USE_EF_UT_TIME
Zip environment options:
ZIP: [none]
ZIPOPT: [none]
特に、「(cygwin special) for Unix (Intel 386)」あたりが確認する為の重要なポイントです。アセンブラは、Visual C++ もしくは、Visual Studioと一緒にすでにインストールされている可能性があります。
必要なファイル(ML.EXEと、ML.ERR)の所在を確認してみて下さい。
存在しない場合は上記のリンク先にフリーなバージョンを入手する方法があります。
入手したら、パスの通ったフォルダにML.EXEと、ML.ERRをコピーして下さい。
- Microsoft Platform SDK(February 2003)
Microsoft Platform SDKのなかで必要なものはMDAC SDK、CORE SDK、INTERNET SDK、WINDOWS INSTALLER SDKです。
通常はVisual C++のインストール時に一緒にインストールされているはずです。
- DirectX 9.0 SDK Update(Summer 2004)以降
2.0 Code Lineからは、DirectX 9.0 SDKも必要となりました。
- Microsoft Layer for Unicode - unicows.dll
Windows 95/98/MeではWindowsのUNICODE APIについてはごく限定されたものしかサポートされません。
これを補完するのがこのDLLで、再配布可能なファイルとしてマイクロソフトが提供しています。
あらかじめ開発環境でWindowsディレクトリに入れておきます。
- gpc 一般多角形クリップライブラリ リリース 2.31
zipアーカイブをダウンロードして解凍し、ライブラリに含まれるソースコードからgpc.cとgpc.hをソース展開後のディレクトリのexternal/gpcにコピーします。
(これは後述のスクリプトで実行されます)
アーカイブファイルをダウンロードして、configureを実行する時に指定する --with-ant-home の指定先に展開しておきます。
- CPAN - Perl zip module Archive-Zip , Compress-Zlib
perlのzipモジュールも必要です。
Archive-ZipとCompress-Zlibのアーカイブファイルを入手し、それぞれを展開した後に次のようにしてビルド & インストールしておきます。
$ perl Makefile.PL
$ make
$ make test
$ make install
ソースコードの入手
現在、OpenOffice.org 2.0のソースコードはtarボールにより提供されていません。CVSレポジトリよりダウンロードする必要があります。以下のようなコマンドによりダウンロードができます。ちなみに、OpenOffice.org 2.0の開発はHEADブランチで進んでおり、マイルストーンごとにSRC680_m62といったようなタグがうたれています。${BRANCH_TAG}にはこのタグを指定してください。62という数字はマイルストーン番号であり、2週間おきにマイルストーンが設定されています。また、これよりソースコードのディレクトリを${SRC_ROOT}とします。
$ mkdir ${SRC_ROOT}
$ cd ${SRC_ROOT}
$ export CVSROOT=":pserver:anoncvs@anoncvs.services.openoffice.org:/cvs
$ cvs co -r ${BRANCH_TAG} OpenOffice
日本語環境でのビルドのための修正
OpenOffice.orgの原型はドイツで開発され、ソースコード内の文字(列)定数およびコメントにドイツ語で使用される0x80以上のラテン文字が含まれます。また現在、OpenOffice.org内部では文字コードとしてUNICODE(UTF-8)が使用されています。
これらの文字の一部には日本語版のマイクロソフトVisual C++のプリプロセッサ及びコンパイラで日本語シフトJIS文字の一バイト目と解釈されてしまい、次に続く改行文字やコンパイラで解釈される特殊文字が正しく解釈されない場合があります。
ほとんどのソースファイルでインクルードされる${SRC_ROOT}/sal/inc/sal/config.hに$pragma setlocale("C")という一行を追加する事によって日本語シフトJIS文字と解釈しないようにする事が出来ます。
ただし、一部のプロジェクトは例外となります。
具体的には、hwpfilterの以下のファイルです。
${SRC_ROOT}/hwpfilter/source/fontmap.cpp ${SRC_ROOT}/hwpfilter/source/hcode.cpp ${SRC_ROOT}/hwpfilter/source/hinfo.h ${SRC_ROOT}/hwpfilter/source/hpara.h ${SRC_ROOT}/hwpfilter/source/hwpeq.cpp これらに関して、Unicode対応のエディタを持っているのであれば、一度UTF-8エンコードで開いて保存しなおすとビルドが通るようになりました。
(筆者は、EmEditorにて確認しました。)
ビルドの環境設定
環境設定は Cygwinツールキットの中で bash(bourne again シェル)でコマンドを走らせて実行します。ですが、その前に開発環境の設定をしておかなければなりません。
環境変数includeおよびlib、pathがきちんとに設定されているのを確認して下さい。
もし設定されていなければ、この段階で設定しておきます。
以下は、筆者の場合の設定例です。
INCLUDE=C:\Program Files\Microsoft SDK\Include;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\ATLMFC\INCLUDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\INCLUDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\include;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include
LIB=C:\Program Files\Microsoft SDK\Lib;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\ATLMFC\LIB;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\LIB;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\lib
Path=C:\WINDOWS\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SDK\Bin;C:\Program Files\Microsoft SDK\Bin\WinNT;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE;C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\BIN;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools;C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\bin;C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322;C:\Program Files\ConvertDSWSetup;C:\cygwin
configureの実行
次にconfig_officeディレクトリに移り、./configureを行ないます。このときに適宜./configureにオプションをつけてください。./configureで設定できるオプションは
$ ${SRC_ROOT}/config_office
$ ./configure --help
で見ることができます。必要なものにリストしたプログラムについては上記の設定例のようにPATHに通しておき、(cygwin内で)JAVA_HOMEやANT_HOMEも設定しておけば特にオプションをつける必要はないでしょう。ただし、日本語版をビルドする際には、--with-lang=jaオプションが必要です。この場合、日本語版と英語版の両方がビルドされます(英語版はデフォルトでビルドされます)。
cd ${SRC_ROOT}/config_office
./configure --with-lang=ja
makeする前に
環境変数の設定とビルド環境の構築をします。bashを使っているならば${SRC_ROOT}にあるwinenv.set.shを、tcshを使っているならばwinenv.setを取りこみます。そして、bootstrapをしてdmakeなどのツールを生成させます。
$ cd ${SRC_ROOT}
$ source ./winenv.set.sh (bashの場合)
$ source ./winenv.set (tcshの場合)
$ ./bootstrap
ビルド開始
これでビルドの準備は整いました。dmakeコマンドでビルドを開始します。
dmake
dmakeを始めたら、あとはただ待つのみです。Pentium 4 2.4GHz, メモリ512Mでだいたい25時間ぐらいかかりました。
ビルドのログ
$ dmake 2>&1 | tee ログファイル名
ビルドが終了したら
エラー出力がなく、最後までビルドが終ったら${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
(ただし、一部のパッケージがビルド出来なかった場合などは、${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja_witherror)
以下にOpenOffice.orgのインストールパッケージが出来ています。
$ cd ${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
$ setup.exe
とすると、OpenOffice.orgがインストールされるはずです。
このインストールパッケージを他の人に配布するには
$ cd ${SRC_ROOT}/instsetoo_native/wntmsci10.pro/OpenOffice/install/ja
$ zip ${SRC_ROOT}/OOo_1.9.m70_Win32Intel_install_ja.zip *
とします。こうすると、${SRC_ROOT}にOOo_1.9.m70_Win32Intel_install_ja.zipというアーカイブができます。ビルドしたバイナリを配布するにはこのアーカイブを配ればよいです。また、アーカイブ名は適宜変更してください。
モジュール毎のビルド
ソースファイルの修正をしたり、特定のモジュールだけを再度ビルドする場合以下のように実施します。
該当モジュール内の全てのものを再度ビルドする時は、初めに該当モジュールフォルダ内のwntmsci10.proフォルダを削除します。
ソースファイルを修正後、該当モジュールのフォルダに移動します。
$ cd ${SRC_ROOT}\(module)
$ build
$ deliver
一連の作業を楽にするために
自分でOpenOffice.orgをビルドするのはとても大変な作業で、特にソースコードをダウンロードしてからビルドを開始するまでには単純な作業を強いられます。
この単純な作業を自動で行うためのシェルスクリプトを作成しました。是非、使ってみてください。
デザイン:小浦寛裕