TortoiseSVN
エクスプローラーと統合可能なSVNクライアントのTortoiseSVNのビルド方法。
- 目的
- TortoiseSVNをソースからビルドする。
- 環境
- Windows XP Pro SP1、VisualStudio.NET 2003
- 前提条件
- id:yowitirow:20040303の手順でsubversionのビルドを実行し、suv.exeクライアントが存在していること。
- Windows Template Libraryのインストール
Windows Template Libraryがいるのでダウンロードしてインストールする。
ダウンロードサイト→WTL70.exe
WTL70.exeは実行型ZIPファイルなので適当なところに解凍する。
解凍先フォルダのincludeフォルダをVC.NET2003のインクルードパスに追加しておく。
- ビルド用フォルダ
- フォルダ作成
ビルド用フォルダを用意する。仮にはフォルダ名をSUVとする。
SUVにcommonフォルダを作る。
-
- opensslソースのコピー
commonにopenssl\inc32\opensslフォルダを作る。
subversionビルド時に使用したopensslソースフォルダ内のinc32\openssl\フォルダの中身をコピーする。
-
- zlibソースのコピー
commonにzlibフォルダを作る。
subversionビルド時に使用したzlib113-win32フォルダの中身をコピーする。
- ソースの取得
- subversionソースの取得
commonフォルダにて
svn checkout http://svn.collab.net/repos/svn/trunk subversion
を実行しsubversionのソースを取得。
-
- TortoiseSVNソースの取得
svn checkout http://svn.collab.net/repos/tortoisesvn/trunk tortoisesvn
を実行しTortoiseSVNのソースを取得。
- ビルド実行
- subversionのビルド
以前の方法と同じだが作業内容を列挙しておく。詳細はid:yowitirow:20040303を参照。
subversionソースフォルダにneonフォルダを作り、ダウンロード済みneonフォルダの中身をコピー。
subversionソースフォルダにdb4-win32\includeとdb4-win32\libフォルダを作る。
BerkeleyDBソースフォルダのbuild_win32フォルダのdb.hをdb4-win32\includeにコピー。
BerkeleyDBソースフォルダのbuild_win32\Releaseフォルダのlibdb42.libをdb4-win32\libにコピー。
Apacheソースフォルダ\srclibのapr、apr-util、apr-iconvをsubversionソースフォルダにコピー。
subversionソースフォルダで以下のスクリプトを実行。
python gen-make.py -t vcproj --with-zlib=C:\download\zlib\zlib113-win32 --with-openssl=C:\download\OpenSSL\openssl-0.9.7c --with-httpd=C:\download\Apache\httpd-2.0.48
作成されたsubversion_vcnet.slnをVS.NET2003で開く。
libaprutilのビルドで../db4-win32/lib/libdb42.libへのパスがない。
Projectのプロパティでリンカ->入力ファイルの追加の依存ファイルに../db4-win32/lib/libdb42.libを追加。
Releseで__ALL__をビルド。
-
- TortoiseSVNのビルド
tortoisesvn\src\TortoiseSVN.slnをVS.NET2003で開く。
-
-
- 依存ライブラリの参照先を変更する
-
そのまま実行すると"__imp__apr_pool_create_ex@16" は未解決ですなどのエラーが出る。
subversionでaprを使っているところがdllでビルドなのが原因なのだと思うが、TortoiseSVNの修正だけで済ませることにする。
プロジェクトSubWCRevのプロパティでリンカ->入力の追加の依存ファイルの参照先を変更する。
apr、apr-util、apr-iconの各フォルダのlibRを参照しているものをReleaseになおす。
TortoiseProc、TortoiseMerger、TortoiseShellのプロジェクトでも同様。
../../../Subversion\apr\libR\apr.lib ../../../Subversion\apr-util\libR\aprutil.lib ../../../Subversion\apr-iconv\libR\apriconv.lib
以下に修正。
../../../Subversion\apr\Release\libapr.lib ../../../Subversion\apr-util\Release\libaprutil.lib ../../../Subversion\apr-iconv\Release\libapriconv.lib
-
-
- SubWCRevのビルド。
-
SubWCRevは他のプロジェクトの実行に使用されるので、先にビルドされる。
このとき以下の各dllにパスがとおっていないと実行できないのでパスを通しておくか、SubWCRevフォルダにコピーするようにしておく。
..\..\..\Subversion\apr-util\Release\libaprutil.dll ..\..\..\Subversion\apr-iconv\Release\libapriconv.dll ..\..\..\Subversion\apr\Release\libapr.dll
libdb42.dllにもパスがいるが、すでにパスが存在していれば追加する必要はない。
ソリューションのビルドを実行すると、インストーラー作成プロジェクト以外のビルドが実行される。
-
-
- DOCの作成。
-
ドキュメント類を作成する。DOCフォルダ以下にソースが存在しているので、作成用ツールパックをダウンロードする。
tortoisesvn dwonloadにてtools.zipをダウンロード。
中身をTortoisesvnソースフォルダ\doc\toolsフォルダに解凍する。
Tortoisesvnソースフォルダ\doc\makedocを実行。ヘルプファイルが作成される。
-
-
- 言語コンバート用ファイルのコピー
-
subversionソースフォルダ\apr-iconv\Release\iconvフォルダの中身をTortoisesvnソースフォルダ\bin\Release\iconvフォルダにコピーする
-
-
- インストーラーのビルド
-
TortoiseSVNSetupプロジェクトをビルドする。
TortoiseSVNSetup.msiが完成する。
-
- インストール
完成したTortoiseSVNSetup.msiを実行しインストールする。
以上でビルドできるが、実はtortoisesvn dwonloadにビルド済みのファイルが存在しているのでそれをインストールすればいいような気もする。
なんかおかしなところがありましたら教えてくれると空に舞い上がるほど喜びます。