2008年2月14日木曜日

ちょい投げやり。

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
例によって2space indent

Packagerの主要部分。

def prepare(self):
client= pysvn.Client()
try:
print "checking out"
print self.src
client.checkout(self.src, self.working_dir)
except pysvn.ClientError, e:
print 'failed to checkout'
print e
pass
def build(self):
bdist = popen2.Popen3(
'python %s/setup.py %s'%(self.working_dir, self.subcommand),
capturestderr=True)
return os.WIFEXITED(bdist.wait())


デーモン化

class PackageDaemon(Daemon):
default_conf = '/home/nori/Desktop/work/autopackaging/my.conf'
section = 'Package'
def run(self):
server = SimpleXMLRPCServer(('localhost', 9000))
server.register_function(on_commit)
server.serve_forever()


buildbotなるものがあるので調べることにしよう。

3 件のコメント:

nori さんのコメント...

こうやってソースを見ると、serverを作るタイミングはroot setupな気がしてきた。そうしないと1000以下のportを使えない。たいしたことではないが。

Buildbotの発表資料:
build bot at pycon 2003

nori さんのコメント...

そんなことよりexceptionをどうしようか。(bool, result)のtupleを返してもいいが、面倒。

Pass error (exception) message to XMLRPC clien @ Twisted-Python

Transmitting exceptions through XML-RPC @ ASPN

まあ、この場合は外に出すrpcじゃないので全部通してもいいのだが。

pythonのxmlrpcのexception周りになにかあるらしい @ cherrypy

nori さんのコメント...

os.WIFEXITED, os.WEXITSTATUS @ google code
を見る限り、os.WTERMSIGも呼んでチェックするほうがよさそう。