RapidSVN を Windows でビルドする

| コメント(0) | トラックバック(0)

俺はどうもTortoiseSVNのシェル結合が気に食わなくて
RapidSVNというSVNクライアントを使ってるわけなんだが
なんとなくリビルドしてみたのでメモメモ。

つーか Subversion系のビルドってば何でこんなに大変なんだ_no
この記事一度ビルド成功した後まっさらにしてもう一度やりつつ書いてるんだが、
次成功しなかったらどうしよう(笑

ってわけで、本文は続きに。

環境整備
・Visual C++ 2005 Express Edition
・Microsoft Platfome SDK
・wxWidgets
の3つが必要。
普段はwxDev-C++を使っているので、以下のページを見ながらインストールした。

フリープログラミング for windows内の
Visual C++ Express Editionを使ってみる(Windows Platform SDK編)
Visual C++ Express EditionでwxWidgetsを使ってみる

なお、今回は普通に使うバイナリがほしいのですべてReleaseでビルドする。

wxWidgetsの設定が終わった後、
環境変数にWX=%WXWIN%をセットしておく。

必要なファイルのダウンロードと配置

・RapidSVNの最新ソース
RapidSVNの最新ソースは
http://rapidsvn.tigris.org/svn/rapidsvn/trunk
からsvn checkoutすればいい。
既存のRapidSVNなりTortoiseSVNなりを使って、
C:\temp\RapidSVNにチェックアウトする。
今回はコマンドラインのSubversionを使ったので以下のコマンドでチェックアウトした。

cd c:\temp
svn co http://rapidsvn.tigris.org/svn/rapidsvn/trunk RapidSVN

・Subversionのソース
Subversionのソースは最新は1.4.Xだが、
1.3.Xならaprやらexpatやらneonやら、Subversion自体のビルドに必要なものが同封されているので
こちらを使った
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=6781&expandFolder=6781&folderID=0
ここから
subversion-1.3.2.zipをダウンロードし、
C:\svnに解凍する。

・OpenSSL
有志の方がWin32向けのビルドをしてくれている、
http://www.slproweb.com/products/Win32OpenSSL.html
から
Win32OpenSSL-0_9_8d.exe
をダウンロードし、インストールする。

・db4-win32
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=688&expandFolder=688&folderID=6781
こちらのSubversionのページより
db-4.4.20-win32.zipをダウンロードし、
C:\db4-win32に解凍する。

・libintl
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=2627&expandFolder=2627&folderID=688
同じくこちらのSubversionのページより
svn-win32-libintl.zipをダウンロードし、
C:\svn-win32-libintlに解凍する。

環境変数の設定
ビルド時に必要になる以下の環境変数を設定する。

SUBVERSION=C:\svn
OPENSSL_SRC=C:\OpenSSL
LIBINTL=C:\svn-win32-libintl

ソースファイルの修正

C:\svn\build\win32\build_neon.batの編集

デフォルトではsubversionのパスがスタティックに書かれているので修正。

/home/dave/svn/env/.dist_sandbox/subversion-1.3.2

となっている部分を
%SUBVERSION%

に変更する。


C:\svn\neon\neon.makの編集

今回ダウンロードしたOpenSSL-0.9.8dはフォルダ構成が違うので以下の部分を修正する。

OPENSSL_FLAGS = /I "$(OPENSSL_SRC)\inc32" /D NE_HAVE_SSL /D HAVE_OPENSSL

                 ↓
OPENSSL_FLAGS = /I "$(OPENSSL_SRC)\include" /D NE_HAVE_SSL /D HAVE_OPENSSL


!IF "$(OPENSSL_SRC)" != ""
LIB32_OBJS = $(LIB32_OBJS) "$(INTDIR)\ne_openssl.obj"
!IFDEF OPENSSL_STATIC
LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32\libeay32.lib" \
            "$(OPENSSL_SRC)\out32\ssleay32.lib"
!ELSE
LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\out32dll\libeay32.lib" \
            "$(OPENSSL_SRC)\out32dll\ssleay32.lib"
!ENDIF

                 ↓
!IF "$(OPENSSL_SRC)" != ""
LIB32_OBJS = $(LIB32_OBJS) "$(INTDIR)\ne_openssl.obj"
!IFDEF OPENSSL_STATIC
LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\lib\VC\libeay32MT.lib" \
            "$(OPENSSL_SRC)\lib\VC\ssleay32MT.lib"
!ELSE
LIB32_OBJS = $(LIB32_OBJS) "$(OPENSSL_SRC)\lib\VC\libeay32MD.lib" \
            "$(OPENSSL_SRC)\lib\VC\ssleay32MD.lib"
!ENDIF

の2箇所

C:\svn\neon\src\ne_xml.c編集

expat.hよりXML_MAJOR_VERSIONを引っ張ってきているのだが、
ビルド時にエラーが出るので以下の部分をコメントアウトする

#if !defined(XML_MAJOR_VERSION) || (XML_MAJOR_VERSION < 2 \
                && XML_MINOR_VERSION == 95 \
                && XML_MICRO_VERSION < 2)
#define NEED_BOM_HANDLING
#endif

                 ↓
//#if !defined(XML_MAJOR_VERSION) || (XML_MAJOR_VERSION < 2 \
//                && XML_MINOR_VERSION == 95 \
//                && XML_MICRO_VERSION < 2)
//#define NEED_BOM_HANDLING
//#endif

いよいよビルド
まずはSubversionのビルドから。
C:\svn\subversion_msvc.dswを開き、プロジェクトを変換する。
zlib.dspでエラーが出るが、気にしなくてよい。

ビルドに入る前にdb4のインクルードファイルのパスが違うので修正する。
ソリューションエクスプローラーより
libsvn_fs_baseを探し、
右クリック→プロパティ→構成プロパティ→C/C++→全般と選択し、
追加のインクルードディレクトリ内の
..\..\..\db4-win32 を C:\db4-win32 に変更する


今回はSubversion自体をビルドするわけではないので、
以下のものだけ選択してビルドする。

libapr
libaprutil
neon
libsvn_client
libsvn_delta
libsvn_diff
libsvn_fs_base
libsvn_fs
libsvn_fs_fs
libsvn_ra
libsvn_ra_dav
libsvn_ra_local
libsvn_ra_svn
libsvn_repos
libsvn_subr
libsvn_wc

それぞれ単品をビルドするには、
ソリューションエクスプローラーより目的の物を右クリックし、ビルドを選べばよい。


最後にRapidSVNのビルドをする。
C:\temp\RapidSVN\rapidsvn.dswを開き、プロジェクトを変換する。

ここでまたライブラリのパス等の修正をする。
一つ目はdb4-libの修正
ソリューションエクスプローラよりrapidsvnを右クリック、
プロパティ→構成プロパティ→リンカ→全般と選択し、
追加のライブラリ ディレクトリにC:\db4-win32\libを追加する。

次にwxpng.libの外部参照エラーを解決するため、依存ファイルにwxzlib.libを追加する。
ソリューションエクスプローラよりrapidsvnを右クリック
プロパティ→構成プロパティ→リンカ→入力と選択し、
追加の依存ファイルにwxzlib.libを追加する。

以上で下準備は終了
あとは上部メニューよりビルド→ソリューションのビルドと選択すればrapidsvn.exeの出来上がり。

最後に出来上がったrapidsvn.exeを適当なディレクトリにコピーし、
同じディレクトリに以下のものをコピーすれば完了だ。

C:\svn\apr\Release\libapr.dll
C:\svn\apr-util\Release\libaprutil.dll
C:\svn\apr-iconv\Release\libapriconv.dll
C:\db4-win32\bin\libdb44.dll
C:\svn-win32-libintl\bin\intl3_svn.dll
C:\Windows\System32\ssleay32.dll
C:\Windows\System32\libeay32.dll


はぁ・・・・ にしても相変わらず文章下手だなぁ・・・ 死んだほうがよくね?

トラックバック(0)

トラックバックURL: http://deathmarch.orz.hm/mt/mt-tb.fcgi/60

コメントする