TracLightning ハッキングガイド

このページでは、TracLightningをソースコードからコンパイルする方法やカスタマイズする方法を説明しています。カスタマイズしたTracの配布や、TracLightningの開発に参加したい方は、このページをご覧ください。

ソースコードの閲覧

最新のソースコードは下記のBitBucketから取得できます。

過去のコードは、下記のリポジトリから取得してください。

※コミッタの方は、gitとsubversionにはコミットしないでください。

ビルドについて

TracLightningは、インストーラにInnoSetupを利用しています。開発は、主にISToolを利用しています。ISToolをマシンにインストールしてtrac.issをISToolで開くとビルドスクリプトを編集可能です。

メッセージが文字化けしていますが、trac.issの日本語メッセージを編集するときは、他の日本語に対応したエディタで開いて編集してください。

Trac Lightningのインストールの仕組み

ここでは、Trac Lightningのインストールの仕組みについて解説します。実質install\post-install.batファイルがその役割を担っています。C:\TracLightディレクトリに移動して

install\post-install.bat C:\TracLight
とすると、C:\TracLightディレクトリをベースとして、各種Pythonライブラリ、プラグイン、サンプルリポジトリのセットアップを行うようになっています。下記のディレクトリにインストール資材が入っています。

  • installディレクトリ
    • インストールスクリプトや、置き換える設定ファイルなど。install\replaceディレクトリには内部を置換するファイルが置いてあります。trac.ini.inはTracのグローバル設定ファイル、trac.ini.defaultは各プロジェクト固有の設定ファイルとなっています。
  • python-libディレクトリ
    • Pythonのアプリケーション、ライブラリ等が入っています。trac-jaはパッチを当てた状態でコピーされているので、差分を知りたい場合はオリジナルと差分を取ってください
  • pluginsディレクトリ
    • Tracのプラグインが入っています。
  • projectsディレクトリ
    • 各プロジェクトのファイルが入っています。
  • python
    • Python本体が入っています。ただし、TracLightningインストールスクリプト実行後はアプリケーション、ライブラリやプラグインがインストール済みの状態になっています。
  • binディレクトリ
    • 各種実行ファイルが入っています。create-project.batなど環境依存の実行ファイルはpost-install.batスクリプト実行後に作成されます。

ざっとこんな感じです。それなりに知識があれば、この情報を元にインストールスクリプトを解析することができるでしょう。

プラグインの追加

TracLightningを利用していて、プラグインの不足を感じることがあると思います。TracLightningをカスタマイズした他の担当に配布したい場合、TracLightning自身にプラグインを追加しておくと便利です。プラグインの追加は、次のようにして行います。

プラグインのコピー

plugins\svnディレクトリにプラグインをコピーする。

インストールスクリプトへの追加

trac.issに次のようにしてプラグインをインストーラを含める設定を記述します。(XXXXXの箇所がプラグインのディレクトリ名になります)

Source: plugins\svn\xmlrpcplugin\*; DestDir: {app}\plugins\svn\xmlrpcplugin; Flags: recursesubdirs sortfilesbyextension; Excludes: *.pyc,*.pyo,.svn\*,\build\*,\dist\*,\*.egg-info\*
Source: plugins\svn\tracjsganttplugin\*; DestDir: {app}\plugins\svn\tracjsganttplugin; Flags: recursesubdirs sortfilesbyextension; Excludes: *.pyc,*.pyo,.svn\*,\build\*,\dist\*,\*.egg-info\*
Source: plugins\svn\XXXXXX\*; DestDir: {app}\plugins\svn\XXXXXX; Flags: recursesubdirs sortfilesbyextension; Excludes: *.pyc,*.pyo,.svn\*,\build\*,\dist\*,\*.egg-info\*
Source: backup.bat; DestDir: {app}\

ビルド対象に追加

build.cmdに下記のようにして、ビルド対象に追加します。

for %%i in (
   ....
    tracsubticketsplugin newwikipagebutton tracdragdropplugin tracjsganttplugin
    XXXXXXX
) do (

trac.iniへの追加

デフォルトでプラグインを有効にしたい場合、trac.iniにプラグインの設定を記述します。Trac全体で設定を行いたい場合と、各プロジェクト毎に設定を変えたい場合で設定場所が異なります。

プロジェクト全体への設定

install\replace\trac.ini.in にプロジェクト全体の設定を追加します。componentsセクションでプラグインの有効化の設定の他、プラグイン個別の設定も個々に追加します。ここで行った設定は、全てのプロジェクトへ反映されます。

プロジェクト個別の設定

install\trac.ini.defaultとinstall\trac.ini.agileでプロジェクト個別の設定を行います。defaultは通常のプロジェクトでagileはアジャイル用のプロジェクトを作成したときに設定されます。プロジェクト全体への設定と同じようにcomponentsセクションやその他の設定を追加してください。

なお、必ずしも全ての人が必要としないプラグインの場合、プラグインのインストールだけ行って、trac.iniへcomponentsの設定を追加しなければ、後でプラグインを有効化したユーザのみそのプラグインを使えるようになります。