+++ /dev/null
-# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
-
-import path
-import time
-import os
-import re
-import log
-
-from config import config
-import util
-
-class Buildlogs_Queue:
- def __init__(self):
- self.queue = []
- self.some_failed = 0
- self.requester_email = None
-
- def init(self, g):
- self.requester_email = g.requester_email
-
- def add(self, logfile, failed, id):
- # if /dev/null, don't even bother to store it
- if config.buildlogs_url == "/dev/null":
- return
- blogfile = os.path.basename(logfile)
- name = re.sub(r"\.spec\.log", "", blogfile) + "," + id + ".bz2"
- ret = os.system("bzip2 --best --force < %s > %s" \
- % (logfile, path.buildlogs_queue_dir + '/' + config.builder + '.' + id + '.' + blogfile))
- if ret:
- log.error("bzip2 compression of %s failed; does bzip2 binary exist?" % (logfile))
-
- if failed: s = "FAIL"
- else: s = "OK"
- f = open(path.buildlogs_queue_dir + '/' + config.builder + '.' + id + '.' + blogfile + ".info", "w")
- f.write("Status: %s\nEND\n" % s)
- f.close()
-
- self.queue.append({'name': name, 'id': config.builder + '.' + id + '.' + blogfile, 'failed': failed})
-
- def flush(self):
- def desc(l):
- return """Target: %s/%s
-Builder: %s
-Time: %d
-Type: buildlog
-Requester: %s
-END
-""" % (config.buildlogs_url, l['name'], config.builder, time.time(), self.requester_email)
-
- q = self.queue[:]
- for l in q:
- f = open(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", "w")
- f.write(desc(l))
- f.close()
- os.rename(path.buildlogs_queue_dir + '/' + l['id'] + ".desc.tmp", path.buildlogs_queue_dir + '/' + l['id'] + ".desc")
- self.queue.remove(l)
-
-queue = Buildlogs_Queue()
-
-def init(r):
- queue.init(r)
-
-def add(logfile, failed, id):
- "Add new buildlog with specified status."
- queue.add(logfile, failed, id)
-
-def flush():
- "Send buildlogs to server."
- queue.flush()