subversion 1.5 で checkout した IniAdminPlugin を setup.py bdist_egg したらエラーになった

0.11 用の IniAdminPlugin の egg ファイルを作成しようとして python setup.py bdist_egg するといきなりエラーになった。

$ python setup.py bdist_egg
running bdist_egg
running egg_info
creating IniAdmin.egg-info
writing IniAdmin.egg-info/PKG-INFO
writing top-level names to IniAdmin.egg-info/top_level.txt
writing dependency_links to IniAdmin.egg-info/dependency_links.txt
writing entry points to IniAdmin.egg-info/entry_points.txt
writing manifest file 'IniAdmin.egg-info/SOURCES.txt'
Traceback (most recent call last):
  File "setup.py", line 11, in ?
    package_data={'iniadmin' : ['htdocs/css/*.css', 'templates/*.html', ]})
  File "/usr/lib/python2.3/distutils/core.py", line 149, in setup
    dist.run_commands()
  File "/usr/lib/python2.3/distutils/dist.py", line 907, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.3/distutils/dist.py", line 927, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.3/site-packages/setuptools/command/bdist_egg.py", line 167, in run
    self.run_command("egg_info")
  File "/usr/lib/python2.3/distutils/cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python2.3/distutils/dist.py", line 927, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.3/site-packages/setuptools/command/egg_info.py", line 171, in run
    self.find_sources()
  File "/usr/lib/python2.3/site-packages/setuptools/command/egg_info.py", line 252, in find_sources
    mm.run()
  File "/usr/lib/python2.3/site-packages/setuptools/command/egg_info.py", line 306, in run
    self.add_defaults()
  File "/usr/lib/python2.3/site-packages/setuptools/command/egg_info.py", line 333, in add_defaults
    rcfiles = list(walk_revctrl())
  File "/usr/lib/python2.3/site-packages/setuptools/command/sdist.py", line 45, in walk_revctrl
    for item in ep.load()(dirname):
  File "/usr/lib/python2.3/site-packages/setuptools/command/sdist.py", line 52, in _default_revctrl
    for path in finder(dirname,path):
  File "/usr/lib/python2.3/site-packages/setuptools/command/sdist.py", line 98, in entries_finder
    log.warn("unrecognized .svn/entries format in %s", dirname)
NameError: global name 'log' is not defined

どうも subversion 1.5 working copy のフォーマットが変更になったので setuptools が .svn/entries からリビジョン番号を取り出そうとして失敗している模様。(NameError: global name 'log' is not defined になっているのはまた別の問題だとは思うがとりあえず今はムシ)

$ head -1 .svn/entries
9

setuptools のページから repository を確認したけど branches/setuptools-0.6trunksubversion 1.5 用の処理はまだない。

svn export すればいけるだろうげとそれもなんか癪なので別の方法を。
ここで working copy フォーマットを変更するツールがあるのを思い出したのでそれを使ってみる。

$ /usr/lib/subversion/tools/client-side/change-svn-wc-format.py
usage: change-svn-wc-format.py WC_PATH SVN_VERSION [--verbose] [--force] [--skip-unknown-format]
       change-svn-wc-format.py --help

Change the format of a Subversion working copy to that of SVN_VERSION.

  --skip-unknown-format    : skip directories with unknown working copy
                             format and continue the update

第1引数には working copy のディレクトリを指定して、第2引数には subversion のバージョンを指定するらしい。今は 1.4 相当にしたいので 1.4 を指定。

$ /usr/lib/subversion/tools/client-side/change-svn-wc-format.py . 1.4
Converted WC at '.' into format 8 for Subversion 1.4
$ head -1 .svn/entries
8

いちおう 8 になっている。気を取り直して bdist_egg してみる。

$ python setup.py bdist_egg
running bdist_egg
running egg_info
writing IniAdmin.egg-info/PKG-INFO
....
creating dist
creating 'dist/IniAdmin-0.2-py2.3.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)

できた。
あれ。egg ファイルの名前 IniAdmin-0.2-py2.3.egg にリビジョン番号入ってないよ…。setuptools は working copy にいたら常にリビジョン番号を取り出そうとするのね…。