2008年5月26日月曜日

プログラムにtreeのrevisionを埋め込む。

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
fileのrevisionは$revとかをsvnで使えるようにすればいい。しかし、binary releaseする場合にはtreeとしてのrevisionがほしい。そんなわけでやる気のないscriptを書いてmakeの時に実行するようにしました。treeのupdate後、binaryのビルド前に実行するようにします。

あー、このコードは好きに使ってよいです。オリジナリティを主張できるほど長いとは思えないし。誰かもっとスマートにやる方法、教えてください。

#!/usr/bin/env python
# -*- coding: us-ascii -*-
# vim: syntax=python
#
# Copyright 2006-2008 Noriyuki Hosaka nori@backgammon.gr.jp
#
import sys
import os
import re
import subprocess

regexp = re.compile('[0-9]+')

print "os.getcwd() = ", os.getcwd()
print 'svn update ', sys.argv[1]
p = subprocess.Popen(['svn', 'update', sys.argv[1]], stdout=subprocess.PIPE)
p.wait()
svn_update = p.stdout.read()
print svn_update
m = regexp.search(svn_update)
assert m
revision = int(m.group())


py = file('revision.py', 'w')

template = """
#!/usr/bin/env python
# -*- coding: us-ascii -*-
#
# Copyright 2006-2008 Noriyuki Hosaka nori@backgammon.gr.jp
# This source is generated by mkrevision.py
#
def get():
return %i
"""

py.write(template%revision)
py.close()

0 件のコメント: