TracのChangeLogMacroを更新した

TracのChangeLogMacroを新しいリビジョンに入れ替えようとしたところ、落とし穴にはまったので覚え書。動作環境は下記の通り。

以前(r7827)は単純にChangeLogMacro.pyファイルが一つだけだったので、プロジェクトのプラグインフォルダに入れていたけれど、今回(r8856)はsetup.pyが含まれていた。下記のチケットに対する修正で入ったらしい。

幾つかのバージョン毎にプラグインが用意されていたので、プロジェクトの環境に合わせて0.11用を選択してインストールした。

C:\tmp\changelogmacro\branches\0.11>python.exe setup.py install

インストール自体は成功して無事に使えるようになったものの、「管理」画面→「プラグイン」には"Trac 0.11.7.ja1ではなく、一つ前のバージョンである"Trac 0.11.6.ja1"と表示されていることに気がついた。これは変だ。インストール前までは確かに"Trac 0.11.7.ja1"だったはずだ。実際、0.11.7.ja1を再インストールしてから、再度ChangeLogMacroをインストールすると、動作環境が0.11.6.ja1に戻ってしまう。

調べたところ、ChangeLogMacroのインストールにより下記のファイルが書き換えられてしまい、__requires__の値が下記に変わってしまうことが分かった。

  • Python25\Scripts\trac-admin-script.py
__requires__ = 'trac==0.11.6.ja1'

インストールスクリプトを確認すると下記の記述が見つかった。インストール済みの0.11.7.ja1は、インストール対象とされている0.11.7より新しいバージョンと見なされて「対象外」となっているようだ。

  • changelogmacro\branches\0.11\setup.py
install_requires = ['Trac <= 0.11.7'],

仕方ないのでバージョンの比較処理を下記のように書き換えて再インストールしたところ、今度は無事に0.11.7.ja1環境のままで使えるようになった。

install_requires = ['Trac < 0.11.8'],

プラグインを作っている人は、".ja1"なんていうローカルバージョンを知らないからこのような形の判断になっているのは仕方ないかも知れない。でも、こんなプラグインのインストールでtracの動作バージョンまで変わってしまうとは初めて知った。