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.cPyLocale_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 にアクセスしてみる。

changed September 20, 2007