Friday, January 02, 2009

在 OS X 上編譯 Subversion

因為 OpenCollabNet 提供的 OS X 映像檔在我的 10.4 PPC 上老是有名稱空間污染的毛病,單純用指令是沒問題,可是用 subclipse 就會有很大的問題,所以只好自己試試看重編一份,最差的情況就是下去 debug 看看到底是怎樣。

比想像中的順利的多,重新編譯就好了... 不用去改程式。

先把舊的 OpenCollabNet 版的資料夾改名,以避免編譯時去用到 OpenCollabNet 的 binary code 而造成相容性的問題。

sudo mv /opt/subversion /opt/subversion-154

要下載的是 subversion-1.5.5.tar.bz2 與 subversion-deps-1.5.5.tar.bz2 這兩個,後者提供了所需的第三方函示庫的原始碼,直接在同一個目錄下解壓兩者就可以了,檔案都會被解到 subversion-1.5.5 這個目錄之下。

tar -jxf subversion-1.5.5.tar.bz2
tar -jxf subversion-deps-1.5.5.tar.bz2
cd subversion-1.5.5/

這篇提到可能會跑去找 jikes 這個比較老舊的東西來當 Java 編譯器,然後會因此編不出東西,所以要下 --with-jikes=no 把他關了,才會去用 javac 來編譯。

export CFLAGS="-g -O3"
export CXXFLAGS="-g -O3"
./configure --prefix=/opt/subversion --enable-javahl --with-jikes=no
make
make javahl
sudomake install
sudo make install-javahl

之前 OpenCollabNet 留下來的 symbolic link 之類的東西大致上都不需要動,可以沿用下來。所以就算是全新安裝,先裝看看 OpenCollabNet 版碰碰運氣也是不錯。

Perl binding 的部份則是要透過 SWIG 來編,也是要另外編譯與安裝。

make swig-pl
sudo make install-swig-pl

不過這邊安裝會裝到系統資料夾裡去,要自己把他們搬出來。

sudo mkdir /opt/subversion/lib/svn-perl
sudo mkdir /opt/subversion/lib/svn-perl/auto
sudo mv /Library/Perl/5.8.6/darwin-thread-multi-2level/SVN /opt/subversion/lib/svn-perl
sudo mv /Library/Perl/5.8.6/darwin-thread-multi-2level/auto/SVN /opt/subversion/lib/svn-perl/auto
sudo mv /usr/local/man/man3/SVN\:\:* /opt/subversion/share/man/man3/

修改 .profile 把 Perl Module 的目錄加到 PERL5LIB 這個環境變數裡,就可以讓 perl 找到。

export PERL5LIB=$PERL5LIB:/opt/subversion/lib/svn-perl/

No comments: