fcntl.flock(self.fd, fcntl.LOCK_UN)
def write_signed(self, name):
- sio = StringIO.StringIO()
+ sio = StringIO()
self._write_to(sio)
sio.seek(0)
sio.write(gpg.sign(sio.read()))
def cp(file, outfile, user="builder", rm=False):
m = md5()
- m.update(str(random.sample(range(100000), 500)))
+ m.update(str(random.sample(range(100000), 500)).encode('utf-8'))
digest = m.hexdigest()
marker_start = "--- FILE BEGIN DIGEST %s ---" % digest
import loop
import status
import lock
+import util
retries_times = [5 * 60, 5 * 60, 10 * 60, 10 * 60, 30 * 60, 60 * 60]
return cmp(x['Type'], y['Type'])
else:
return rc
- q.sort(mycmp)
+ q.sort(key=util.cmp_to_key(mycmp))
error = None
# copy of q
b.log_line("upgrade would need removal of %s" % k)
return False
b.log_line("upgrading packages")
- logbuf = StringIO.StringIO()
+ logbuf = StringIO()
res = chroot.run("rpm -Fvh %s" % ' '.join(b.files), user = "root", logfile = b.logfile)
if res != 0:
b.log_line("package upgrade failed")
import status
import lock
import loop
+import util
import rpm_builder
def mycmp(b1, b2):
return cmp(bs[b1], bs[b2])
- bl.sort(mycmp)
+ bl.sort(key=util.cmp_to_key(mycmp))
f.seek(0)
f.truncate(0)
class Message:
def __init__(self):
self.headers = {}
- self.body = StringIO.StringIO()
+ self.body = StringIO()
self.set_std_headers()
def set_header(self, n, v):
class Notifier:
def __init__(self, g):
- self.xml = StringIO.StringIO()
+ self.xml = StringIO()
self.xml.write("<notification group-id='%s' builder='%s'>\n" % \
(g.id, config.builder))
def send(self, r):
- sio = StringIO.StringIO()
+ sio = StringIO()
self.xml.write("</notification>\n")
self.xml.seek(0)
sio.write(gpg.sign(self.xml.read()))
from io import StringIO
def rw_pipe(buf_, infd, outfd):
- buf = StringIO.StringIO()
+ buf = StringIO()
buf.write(buf_.read())
- ret = StringIO.StringIO()
+ ret = StringIO()
pos = 0
rd_fin = 0
wr_fin = 0
signal.alarm(0)
log.error("can't fetch %s: %s" % (control_url + "/queue.gz", e))
sys.exit(1)
- sio = StringIO.StringIO()
+ sio = StringIO()
util.sendfile(f, sio)
f.close()
sio.seek(0)
return cmp(r1.time, r2.time)
else:
return pri_diff
- q.requests.sort(mycmp)
+ q.requests.sort(key=util.cmp_to_key(mycmp))
ret = q.requests[0]
return ret
return cmp(r1.time, r2.time)
else:
return pri_diff
- q.requests.sort(mycmp)
+ q.requests.sort(key=util.cmp_to_key(mycmp))
ret = q.requests[0]
q.requests = q.requests[1:]
return ret
last_section = m.group(1)
f.close()
return last_section
+
+def cmp_to_key(mycmp):
+ 'Convert a cmp= function into a key= function'
+ class K:
+ def __init__(self, obj, *args):
+ self.obj = obj
+ def __lt__(self, other):
+ return mycmp(self.obj, other.obj) < 0
+ def __gt__(self, other):
+ return mycmp(self.obj, other.obj) > 0
+ def __eq__(self, other):
+ return mycmp(self.obj, other.obj) == 0
+ def __le__(self, other):
+ return mycmp(self.obj, other.obj) <= 0
+ def __ge__(self, other):
+ return mycmp(self.obj, other.obj) >= 0
+ def __ne__(self, other):
+ return mycmp(self.obj, other.obj) != 0
+ return K
exctype, value = sys.exc_info()[:2]
if exctype == SystemExit:
sys.exit(value)
- s = StringIO.StringIO()
+ s = StringIO()
traceback.print_exc(file = s, limit = 20)
log.alert("fatal python exception")