Mac OS X 10.4.10 に Trac インストール
Trac Download
http://trac.edgewall.org/wiki/TracDownload
trac-0.10.4.tar.gz
http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz
Trac Install
http://trac.edgewall.org/wiki/TracInstall
Python
pyexpat と Apache の expat のバージョン不整合で Apache が落ちる
http://www.dscpl.com.au/wiki/ModPython/Articles/ExpatCausingApacheCrash
Python 2.5.1
% curl -O http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tgz
% tar xvzf Python-2.5.1.tgz
% cd Python-2.5.1
% ./configure --prefix=${WORKSPACE}/Trac
% make
% make install
ClearSilver
ClearSilver
http://www.clearsilver.net/
Trac - ClearSilver
http://trac.edgewall.org/wiki/ClearSilver
For Python 2.5, you need to build the package yourself, and you probably need the following patch: googlegroups:trac-users:5b502b38f4e13c8f
% cd ~/Developer/Workspace/Trac/src/
% curl -O http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz
% ./configure --prefix=${WORKSPACE}/Trac \
--with-python=${WORKSPACE}/Trac/bin/python \
--disable-ruby --disable-java --disable-perl --disable-apache --disable-csharp
configure の出力から、スレッドセーフになっていることを確認する。
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
SQLite
% mkdir sqlite
% cd sqlite
% ../sqlite-3.4.0/configure --prefix=${WORKSPACE}/Trac --enable-threadsafe --disable-tcl
% make
% make install
PySQLite
PySQLite : http://initd.org/tracker/pysqlite/wiki/pysqlite
Trac - PySqlite : http://trac.edgewall.org/wiki/PySqlite
すでに Python にバンドルされている?
Trac
% tar xvzf trac-0.10.4.tar.gz
% python ./setup.py install --prefix=${WORKSPACE}/Trac/
% cd ~/Developer/Workspace/Trac
% ./bin/python ./bin/trac-admin ~/Developer/Workspace/Trac/myproject initenv
% ./bin/python ./bin/tracd --port 8000 ${WORKSPACE}/Trac/myproject
tracd を起動したら、http://localhost:8000/myproject にアクセス
Traceback (most recent call last):
File "${WORKSPACE}/Trac//lib/python2.5/site-packages/trac/web/main.py", line 406, in dispatch_request
dispatcher.dispatch(req)
File "${WORKSPACE}/Trac//lib/python2.5/site-packages/trac/web/main.py", line 207, in dispatch
populate_hdf(req.hdf, self.env, req)
File "${WORKSPACE}/Trac//lib/python2.5/site-packages/trac/web/main.py", line 77, in populate_hdf
'time': format_datetime(),
File "${WORKSPACE}/Trac//lib/python2.5/site-packages/trac/util/datefmt.py", line 65, in format_datetime
return unicode(text, encoding, 'replace')
LookupError: unknown encoding: X-MAC-JAPANESE
format_datetime メソッドの中で locale.getpreferredencoding() が "X-MAC-JAPANESE" を返しているのが原因のようだ。そして、locale.py の中の locale.getpreferredencoding() は _locale._getdefaultlocale()[1] を返すようになっている。
で、これは _localemodule.c の PyLocale_getdefaultlocale 関数が実体。で、最終的には CoreFoundation の CFStringGetSystemEncoding を呼ぶようになっている。CFStringGetSystemEncoding は日本語環境では kCFStringEncodingMacJapanese を返す。
最終的にこれは CFStringConvertEncodingToIANACharSetName によって IANA 表現の "X-MAC-JAPANESE" となる。そして、この "X-MAC-JAPANESE" は Python の built-in function unicode でサポートされていない。
% python
>>> unicode('hello')
u'hello'
>>> unicode('hello', 'utf8')
u'hello'
>>> unicode('hello', 'X-MAC-JAPANESE')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: unknown encoding: X-MAC-JAPANESE
解決方法をブログに書いた。
Subversion
Subversion を SWIG サポートつきでインストールする - METAREAL を参考にインストールしていく。
まずは Swig
% curl --location -O http://prdownloads.sourceforge.net/swig/swig-1.3.31.tar.gz
% tar xvzf swig-1.3.31.tar.gz
% cd swig-1.3.31
% ./configure --prefix=${WORKSPACE}/Trac/ --with-python=${WORKSPACE}/Trac/bin/python
% make
% make install
次は Subversion
% curl -O http://subversion.tigris.org/downloads/subversion-1.4.2.tar.bz2
% curl -O http://subversion.tigris.org/downloads/subversion-deps-1.4.2.tar.bz2
% tar xvjf subversion-1.4.2.tar.bz2
% tar xvjf subversion-deps-1.4.2.tar.bz2
% cd subversion-1.4.2
% ./configure --enable-swig-bindings=python --prefix=${WORKSPACE}/Trac/ --with-swig=${WORKSPACE}/Trac/bin/swig
% make
% make install
次に、バインディングをインストール
% make swig-py
% make install-swig-py
% make check-swig-py
Trac with Subversion
% ./bin/svnadmin create ./svn
% mate myproject/conf/trac.ini
repository_dir を設定する
repository_dir = ${WORKSPACE}/Trac/svn/
PYTHONPATH を通す
% export PYTHONPATH=${WORKSPACE}/Trac/lib/svn-python/
起動
% ./bin/python ./bin/tracd --port 8000 ${WORKSPACE}/Trac/myproject
http://localhost:8000/myproject にアクセスしてみる。