From: Elan Ruusamäe Date: Sat, 1 Oct 2011 18:54:51 +0000 (+0000) Subject: - whitespace cleanup X-Git-Tag: Th-CVS~31 X-Git-Url: https://git.pld-linux.org/?a=commitdiff_plain;h=e63765538fbd2fe017c0bcbc9577d0b7d226e30d;p=projects%2Fpld-builder.new.git - whitespace cleanup Changed files: PLD_Builder/acl.py -> 1.29 PLD_Builder/bqueue.py -> 1.24 PLD_Builder/build.py -> 1.18 PLD_Builder/buildlogs.py -> 1.27 PLD_Builder/chroot.py -> 1.41 PLD_Builder/config.py -> 1.42 PLD_Builder/deps.py -> 1.3 PLD_Builder/file_sender.py -> 1.40 PLD_Builder/ftp.py -> 1.15 PLD_Builder/get_br.py -> 1.4 PLD_Builder/gpg.py -> 1.25 PLD_Builder/install.py -> 1.25 PLD_Builder/load_balancer.py -> 1.11 PLD_Builder/log.py -> 1.16 PLD_Builder/loop.py -> 1.3 PLD_Builder/notify.py -> 1.8 PLD_Builder/notifyq.py -> 1.3 PLD_Builder/poldek.py -> 1.4 PLD_Builder/report.py -> 1.37 PLD_Builder/request_fetcher.py -> 1.30 PLD_Builder/request_handler.py -> 1.54 PLD_Builder/rpm_builder.py -> 1.128 PLD_Builder/srpm_builder.py -> 1.79 PLD_Builder/stopwatch.py -> 1.3 PLD_Builder/util.py -> 1.14 client/smtpwrapper.py -> 1.2 --- diff --git a/PLD_Builder/acl.py b/PLD_Builder/acl.py index 4b98184..a769d06 100644 --- a/PLD_Builder/acl.py +++ b/PLD_Builder/acl.py @@ -18,18 +18,18 @@ class User: self.privs = [] self.gpg_emails = [] self.mailto = "" - + if p.has_option(login, "gpg_emails"): self.gpg_emails = string.split(p.get(login, "gpg_emails")) else: log.panic("acl: [%s] has no gpg_emails" % login) - + if p.has_option(login, "mailto"): self.mailto = p.get(login, "mailto") else: if len(self.gpg_emails) > 0: self.mailto = self.gpg_emails[0] - + if p.has_option(login, "privs"): for p in string.split(p.get(login, "privs")): l = string.split(p, ":") @@ -117,7 +117,7 @@ class ACL_Conf: self.users[e] = user self.users[login] = user status.pop() - + def user_by_email(self, ems): for e in ems: if self.users.has_key(e): diff --git a/PLD_Builder/bqueue.py b/PLD_Builder/bqueue.py index a5bf61b..aff32e9 100644 --- a/PLD_Builder/bqueue.py +++ b/PLD_Builder/bqueue.py @@ -74,7 +74,7 @@ class B_Queue: self.fd = open(self.name, "r+") else: self.fd = open(self.name, "w+") - + def read(self): self._open() self.signers = [] @@ -112,7 +112,7 @@ class B_Queue: return 1 except IOError: return 0 - + def unlock(self): fcntl.flock(self.fd, fcntl.LOCK_UN) diff --git a/PLD_Builder/build.py b/PLD_Builder/build.py index 34d9e71..e996731 100644 --- a/PLD_Builder/build.py +++ b/PLD_Builder/build.py @@ -67,7 +67,7 @@ def build_all(r, build_fnc): if dep.build_failed: can_build = 0 failed_dep = dep.spec - + if batch.is_command() and can_build: batch.logfile = tmp + "command" if config.builder in batch.builders: @@ -115,6 +115,6 @@ def build_all(r, build_fnc): batch.build_time = "" log.notice("building %s %s" % (batch.spec, batch.skip_reason)) notify.add_batch(batch, "SKIP") - + buildlogs.flush() chroot.run("rm -f %s" % string.join(r.chroot_files)) diff --git a/PLD_Builder/buildlogs.py b/PLD_Builder/buildlogs.py index b57acff..e874278 100644 --- a/PLD_Builder/buildlogs.py +++ b/PLD_Builder/buildlogs.py @@ -46,7 +46,7 @@ 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") diff --git a/PLD_Builder/chroot.py b/PLD_Builder/chroot.py index 92354d3..f099d01 100644 --- a/PLD_Builder/chroot.py +++ b/PLD_Builder/chroot.py @@ -13,7 +13,7 @@ from config import config def quote(cmd): return re.sub("([\"\\\\$`])", r"\\\1", cmd) - + def command(cmd, user = None, nostdin=""): if user == None: user = config.builder_user @@ -21,7 +21,7 @@ def command(cmd, user = None, nostdin=""): nostdin = "exec < /dev/null; " return "%s sudo chroot %s su - %s -c \"export LC_ALL=C; %s %s\"" \ % (config.sudo_chroot_wrapper, config.chroot, user, nostdin, quote(cmd)) - + def command_sh(cmd): return "%s sudo chroot %s /bin/sh -c \"export LC_ALL=C; exec < /dev/null; %s\"" \ % (config.sudo_chroot_wrapper, config.chroot, quote(cmd)) @@ -29,7 +29,7 @@ def command_sh(cmd): def popen(cmd, user = "builder", mode = "r"): f = os.popen(command(cmd, user), mode) return f - + def run(cmd, user = "builder", logfile = None, logstdout = None): c = command(cmd, user, nostdin=True) if logfile != None: diff --git a/PLD_Builder/config.py b/PLD_Builder/config.py index 05dad7f..2e78cd8 100644 --- a/PLD_Builder/config.py +++ b/PLD_Builder/config.py @@ -46,7 +46,7 @@ class Builder_Conf: return d else: log.panic("cannot find %s::%s" % (builder, o)) - + p.readfp(open(path.builder_conf)) self.admin_email = get("admin_email") @@ -101,7 +101,7 @@ class Builder_Conf: self.builder_user = get("builder_user", "builder") self.sudo_chroot_wrapper = get("sudo_chroot_wrapper", "") self.nice = get("nice", "0") - + f = get("syslog", "") if f != "": if syslog_facilities.has_key(f): diff --git a/PLD_Builder/deps.py b/PLD_Builder/deps.py index 20d056d..404b25c 100644 --- a/PLD_Builder/deps.py +++ b/PLD_Builder/deps.py @@ -18,7 +18,7 @@ def compute_deps(): rpm_prov = {} # list of required files req_files = {} - + def get_req(): msg("rpm-req... ") f = chr_popen("rpm -qa --qf '@\n%{NAME}\n[%{REQUIRENAME}\n]'") @@ -42,7 +42,7 @@ def compute_deps(): msg("[%s: %s, %s] " % (what, rpm_prov[what], pkg)) else: rpm_prov[what] = pkg - + def get_prov(): msg("rpm-prov... ") f = chr_popen("rpm -qa --qf '@\n%{NAME}\n[%{PROVIDENAME}\n]'") @@ -60,7 +60,7 @@ def compute_deps(): del req_files[l] f.close() msg("done\n") - + def get_prov_files(): msg("rpm-files... ") f = chr_popen("rpm -qa --qf '@\n%{NAME}\n[%{FILENAMES}\n]'") @@ -90,7 +90,7 @@ def compute_deps(): msg("[%s: %s] " % (pkg, req)) requires[pkg] = pkg_reqs msg("done\n") - + # map from pkg-name to list of pkg-names required by it # this is result requires = {} @@ -103,7 +103,7 @@ def compute_deps(): def remove_list(req, need): """List of packages scheduled for removal. - + Given dependency information and list of needed packages compute list of packages that don't need to be present. """ diff --git a/PLD_Builder/file_sender.py b/PLD_Builder/file_sender.py index fccc4ea..3c016fd 100644 --- a/PLD_Builder/file_sender.py +++ b/PLD_Builder/file_sender.py @@ -142,7 +142,7 @@ def maybe_flush_queue(dir): os.unlink(dir + "/retry-at") except: pass - + status.push("flushing %s" % dir) if flush_queue(dir): @@ -170,7 +170,7 @@ def flush_queue(dir): else: return rc q.sort(mycmp) - + error = None # copy of q remaining = q[:] @@ -186,7 +186,7 @@ def flush_queue(dir): os.unlink(d['_file']) os.unlink(d['_desc']) remaining.remove(d) - + if error != None: emails = {} emails[config.admin_email] = 1 @@ -198,7 +198,7 @@ def flush_queue(dir): emails[d['Requester']] = 1 e = emails.keys() m = mailer.Message() - m.set_headers(to = string.join(e, ", "), + m.set_headers(to = string.join(e, ", "), subject = "[%s] builder queue problem" % config.builder) m.write("there were problems sending files from queue %s:\n" % dir) m.write("problems:\n") diff --git a/PLD_Builder/ftp.py b/PLD_Builder/ftp.py index 9e0a933..0d13be6 100644 --- a/PLD_Builder/ftp.py +++ b/PLD_Builder/ftp.py @@ -25,7 +25,7 @@ class FTP_Queue: self.url = config.test_ftp_url else: self.url = config.ftp_url - + def add(self, file, type): # if /dev/null, say bye bye if self.url == "/dev/null": @@ -46,7 +46,7 @@ Type: %s Requester: %s END """ % (self.url, l['name'], config.builder, time.time(), l['type'], self.requester_email) - + for l in self.queue: f = open(path.ftp_queue_dir + '/' + l['id'] + ".desc", "w") f.write(desc(l)) @@ -63,7 +63,7 @@ def add(f, type="rpm"): def flush(): queue.flush() - + def kill(): queue.kill() @@ -72,6 +72,6 @@ def init(r=None, rpmqa=False): def status(): return queue.status - + def clear_status(): queue.status = "" diff --git a/PLD_Builder/get_br.py b/PLD_Builder/get_br.py index 5f5efe5..1f69394 100644 --- a/PLD_Builder/get_br.py +++ b/PLD_Builder/get_br.py @@ -8,7 +8,7 @@ from util import * def get_build_requires(spec, bconds_with, bconds_without): cond_rx = re.compile(r"%\{(\!\?|\?\!|\?)([a-zA-Z0-9_+]+)\s*:([^%\{\}]*)\}") - + def expand_conds(l): def expand_one(m): if m.group(1) == "?": @@ -18,7 +18,7 @@ def get_build_requires(spec, bconds_with, bconds_without): if not macros.has_key(m.group(2)): return m.group(3) return "" - + for i in range(10): l = cond_rx.sub(expand_one, l) if len(l) > 1000: break @@ -32,13 +32,13 @@ def get_build_requires(spec, bconds_with, bconds_without): return string.strip(macros[m.group(1)]) else: return m.group(0) # don't change - + for i in range(10): l = macro_rx.sub(expand_one, l) if len(l) > 1000: break - + return expand_conds(l) - + simple_br_rx = re.compile(r"^BuildRequires\s*:\s*([^\s]+)", re.I) bcond_rx = re.compile(r"^%bcond_(with|without)\s+([^\s]+)") version_rx = re.compile(r"^Version\s*:\s*([^\s]+)", re.I) @@ -46,7 +46,7 @@ def get_build_requires(spec, bconds_with, bconds_without): name_rx = re.compile(r"^Name\s*:\s*([^\s]+)", re.I) define_rx = re.compile(r"^\%define\s+([a-zA-Z0-9_+]+)\s+(.*)", re.I) any_br_rx = re.compile(r"BuildRequires", re.I) - + macros = {} for b in bconds_with: macros["_with_%s" % b] = 1 @@ -59,24 +59,24 @@ def get_build_requires(spec, bconds_with, bconds_without): macros["kgcc_package"] = "gcc" build_req = [] - + f = open(spec) for l in xreadlines.xreadlines(f): l = string.strip(l) if l == "%changelog": break - + # %bcond_with.. m = bcond_rx.search(l) if m: bcond = m.group(2) if m.group(1) == "with": - if macros.has_key("_with_%s" % bcond): + if macros.has_key("_with_%s" % bcond): macros["with_%s" % bcond] = 1 else: - if not macros.has_key("_without_%s" % bcond): + if not macros.has_key("_without_%s" % bcond): macros["with_%s" % bcond] = 1 continue - + # name,version,release m = version_rx.search(l) if m: macros["version"] = m.group(1) @@ -88,7 +88,7 @@ def get_build_requires(spec, bconds_with, bconds_without): # %define m = define_rx.search(l) if m: macros[m.group(1)] = m.group(2) - + # *BuildRequires* if any_br_rx.search(l): l = expand_macros(l) diff --git a/PLD_Builder/gpg.py b/PLD_Builder/gpg.py index 1da174e..5c5dbec 100644 --- a/PLD_Builder/gpg.py +++ b/PLD_Builder/gpg.py @@ -30,7 +30,7 @@ def get_keys(buf): rx = re.compile("^gpg: Signature made .*using [DR]SA key ID (.+)") keys = [] - + for l in d_stderr.split('\n'): m = rx.match(l) if m: diff --git a/PLD_Builder/install.py b/PLD_Builder/install.py index 88033fe..3e23699 100644 --- a/PLD_Builder/install.py +++ b/PLD_Builder/install.py @@ -178,7 +178,7 @@ def install_br(r, b): if len(needed) == 0: b.log_line("no BR needed") return True - + nbr = "" for bre in needed.keys(): nbr = nbr + " " + re.escape(bre) diff --git a/PLD_Builder/load_balancer.py b/PLD_Builder/load_balancer.py index 1dd7e04..2e182c8 100644 --- a/PLD_Builder/load_balancer.py +++ b/PLD_Builder/load_balancer.py @@ -24,11 +24,11 @@ def builders_order(): for b in config.binary_builders: bs[b] = 0 bl.append(b) - + lck = lock.lock("got-lock") f = open(path.got_lock_file, "r+") line_no = 0 - + for l in f.xreadlines(): line_no += 1 b = string.strip(l) @@ -39,7 +39,7 @@ def builders_order(): def mycmp(b1, b2): return cmp(bs[b1], bs[b2]) - + bl.sort(mycmp) f.seek(0) diff --git a/PLD_Builder/log.py b/PLD_Builder/log.py index 636090b..54a6c67 100644 --- a/PLD_Builder/log.py +++ b/PLD_Builder/log.py @@ -26,22 +26,22 @@ def log(p, s): f = open(path.log_file, "a") f.write("%s [%s]: %s [%s]\n" % (time.asctime(), builder, s, os.path.basename(sys.argv[0]))) f.close() - + def panic(s): log(syslog.LOG_ALERT, "PANIC: %s" % s) raise Exception, "PANIC: %s" % str(s) def alert(s): - log(syslog.LOG_ALERT, "alert: %s" % s) - + log(syslog.LOG_ALERT, "alert: %s" % s) + def error(s): - log(syslog.LOG_ERR, "error: %s" % s) - + log(syslog.LOG_ERR, "error: %s" % s) + def warn(s): - log(syslog.LOG_WARNING, "warning: %s" % s) - + log(syslog.LOG_WARNING, "warning: %s" % s) + def notice(s): - log(syslog.LOG_NOTICE, "notice: %s" % s) + log(syslog.LOG_NOTICE, "notice: %s" % s) def open_syslog(name, f): global do_syslog diff --git a/PLD_Builder/loop.py b/PLD_Builder/loop.py index 5fa4b1e..bc5be9a 100644 --- a/PLD_Builder/loop.py +++ b/PLD_Builder/loop.py @@ -20,7 +20,7 @@ def run_loop(fnc, secs = 5, max = 60): sys.exit(s) else: sys.exit(10) - + start = time.time() while time.time() - start < max: last = time.time() diff --git a/PLD_Builder/notify.py b/PLD_Builder/notify.py index f830018..5b0368f 100644 --- a/PLD_Builder/notify.py +++ b/PLD_Builder/notify.py @@ -13,7 +13,7 @@ class Notifier: self.xml = StringIO.StringIO() self.xml.write("\n" % \ (g.id, config.builder)) - + def send(self, r): sio = StringIO.StringIO() self.xml.write("\n") @@ -24,10 +24,10 @@ class Notifier: notifyq.init(r) notifyq.add(sio) notifyq.flush() - + def add_batch(self, b, s): self.xml.write(" \n" % (b.b_id, s)) - + n = None def begin(group): diff --git a/PLD_Builder/notifyq.py b/PLD_Builder/notifyq.py index dc73d66..d7bea90 100644 --- a/PLD_Builder/notifyq.py +++ b/PLD_Builder/notifyq.py @@ -17,7 +17,7 @@ class Notify_Queue: self.queue = [] self.requester_email = g.requester_email self.notify_url = config.notify_url - + def add(self, file): id = util.uuid() f = open(path.notify_queue_dir + '/' + id, 'w') @@ -34,7 +34,7 @@ Time: %d Requester: %s END """ % (self.notify_url, l['id'], config.builder, time.time(), self.requester_email) - + for l in self.queue: f = open(path.notify_queue_dir + '/' + l['id'] + ".desc", "w") f.write(desc(l)) @@ -51,7 +51,7 @@ def add(notify): def flush(): queue.flush() - + def kill(): queue.kill() @@ -60,6 +60,6 @@ def init(r): def status(): return queue.status - + def clear_status(): queue.status = "" diff --git a/PLD_Builder/poldek.py b/PLD_Builder/poldek.py index ad9fa8b..9b23a89 100644 --- a/PLD_Builder/poldek.py +++ b/PLD_Builder/poldek.py @@ -19,10 +19,10 @@ def get_poldek_requires(): # and intersection method on set object def intersect(a, b): r = [] - for x in a: + for x in a: if x in b: r.append(x) return r - + # add given req-list to cur_pkg_reqs def add_req(reqs): if len(reqs) == 1: @@ -49,11 +49,11 @@ def get_poldek_requires(): return if not did: cur_pkg_reqs.append(reqs) - + pkg_reqs = {} cur_pkg_reqs = None cur_pkg = None - + f = chr_popen("poldek -v -v --verify --unique-pkg-names") for l in xreadlines.xreadlines(f): m = name_rx.match(l) @@ -78,7 +78,7 @@ def get_poldek_requires(): else: msg("poldek_reqs: bad pkg name: %s\n" % x) if len(reqs) != 0: add_req(reqs) - + f.close() if cur_pkg: diff --git a/PLD_Builder/report.py b/PLD_Builder/report.py index 02d46d5..a0fe7be 100644 --- a/PLD_Builder/report.py +++ b/PLD_Builder/report.py @@ -52,7 +52,7 @@ def info_from_log(b, target): copy_mode = 0 else: target.write(l) - + def send_report(r, is_src = False): s_failed = ' '.join([b.spec for b in r.batches if b.build_failed]) s_ok = ' '.join([b.spec for b in r.batches if not b.build_failed]) @@ -70,7 +70,7 @@ def send_report(r, is_src = False): subject = 'upgrade failed ' subject += ' '.join((s_failed, s_ok)).strip() - + m = mailer.Message() m.set_headers(to = r.requester_email, cc = config.builder_list, @@ -84,9 +84,9 @@ def send_report(r, is_src = False): for b in r.batches: if b.build_failed and b.logfile == None: info = b.skip_reason - elif b.build_failed: + elif b.build_failed: info = "FAILED" - else: + else: info = "OK" m.write("%s (%s): %s\n" % (b.spec, b.branch, info)) @@ -99,13 +99,13 @@ def send_report(r, is_src = False): m.write("\n\n*** buildlog for %s\n" % b.spec) m.append_log(b.logfile) m.write("\n\n") - + m.send() def send_cia_report(r, is_src = False): subject = 'DeliverXML' - + m = mailer.Message() if (len(config.bot_email) == 0): return @@ -134,6 +134,6 @@ def send_cia_report(r, is_src = False): f = open(path.root_dir + '/PLD_Builder/cia-foot.xml') m.write(f.read()) f.close() - + # send the e-mail m.send() diff --git a/PLD_Builder/request_fetcher.py b/PLD_Builder/request_fetcher.py index f293b37..a677a71 100644 --- a/PLD_Builder/request_fetcher.py +++ b/PLD_Builder/request_fetcher.py @@ -92,7 +92,7 @@ def handle_reqs(builder, reqs): q.lock(0) q.read() for r in reqs: - if r.kind != 'group': + if r.kind != 'group': raise Exception, 'handle_reqs: fatal: huh? %s' % r.kind need_it = 0 for b in r.batches: @@ -110,14 +110,14 @@ def main(): sys.exit(1) init_conf() acl.try_reload() - + status.push("fetching requests") if has_new(config.control_url): q = fetch_queue(config.control_url) max_no = 0 q_new = [] for r in q: - if r.no > max_no: + if r.no > max_no: max_no = r.no if r.no > last_count: q_new.append(r) @@ -128,8 +128,8 @@ def main(): f.close() status.pop() lck.close() - + if __name__ == '__main__': - # http connection is established (and few bytes transferred through it) + # http connection is established (and few bytes transferred through it) # each $secs seconds. loop.run_loop(main, secs = 10) diff --git a/PLD_Builder/request_handler.py b/PLD_Builder/request_handler.py index 9416809..388cc9b 100644 --- a/PLD_Builder/request_handler.py +++ b/PLD_Builder/request_handler.py @@ -22,7 +22,7 @@ from config import config, init_conf def check_double_id(id): id_nl = id + "\n" - + ids = open(path.processed_ids_file) for i in ids.xreadlines(): if i == id_nl: @@ -30,7 +30,7 @@ def check_double_id(id): log.alert("request %s already processed" % id) return 1 ids.close() - + ids = open(path.processed_ids_file, "a") ids.write(id_nl) ids.close() @@ -49,7 +49,7 @@ def handle_group(r, user): m.set_headers(subject = "building %s failed" % spec) m.write_line(msg) m.send() - + lockf = lock("request") if check_double_id(r.id): lockf.close() @@ -112,7 +112,7 @@ def handle_group(r, user): % (user.get_login(), pkg, bld, batch.branch)) lockf.close() return - + r.priority = user.check_priority(r.priority,config.builder) r.requester = user.get_login() r.requester_email = user.mail_to() diff --git a/PLD_Builder/rpm_builder.py b/PLD_Builder/rpm_builder.py index 0fda1b5..66720e2 100644 --- a/PLD_Builder/rpm_builder.py +++ b/PLD_Builder/rpm_builder.py @@ -216,7 +216,7 @@ def build_rpm(r, b): def ll(l): util.append_to(b.logfile, l) - + if b.files != []: rpm_cache_dir = config.rpm_cache_dir if "test-build" not in r.flags: @@ -318,7 +318,7 @@ def main_for(builder): l.close() else: msg = "HIGH PRIORITY: " - + msg += "handling request %s (%d) for %s from %s, priority %s" \ % (req.id, req.no, config.builder, req.requester, req.priority) log.notice(msg) @@ -340,11 +340,11 @@ def main_for(builder): if len(q.requests)&1" % - (config.nice, builder_opts, b.bconds_string(), b.branch, + (config.nice, builder_opts, b.bconds_string(), b.branch, tag_test, b.kernel_string(), b.spec)) util.append_to(b.logfile, "request from: %s" % r.requester) util.append_to(b.logfile, "started at: %s" % time.asctime()) diff --git a/PLD_Builder/stopwatch.py b/PLD_Builder/stopwatch.py index 3f0d6cf..151c164 100644 --- a/PLD_Builder/stopwatch.py +++ b/PLD_Builder/stopwatch.py @@ -21,9 +21,9 @@ class Time: def format(self): return "user:%.2fs sys:%.2fs real:%.2fs (faults io:%d non-io:%d)" % \ - (self.user_time, self.sys_time, self.time, self.io_faults, + (self.user_time, self.sys_time, self.time, self.io_faults, self.non_io_faults) - + class Timer: def __init__(self): self.starts = [] diff --git a/PLD_Builder/util.py b/PLD_Builder/util.py index 870e468..316a8f1 100644 --- a/PLD_Builder/util.py +++ b/PLD_Builder/util.py @@ -27,7 +27,7 @@ else: def pkg_name(nvr): return re.match(r"(.+)-[^-]+-[^-]+", nvr).group(1) - + def msg(m): sys.stderr.write(m) diff --git a/client/smtpwrapper.py b/client/smtpwrapper.py index b4c77c7..ad4ff7b 100644 --- a/client/smtpwrapper.py +++ b/client/smtpwrapper.py @@ -11,6 +11,6 @@ msg = sys.stdin.read() server = smtplib.SMTP(smtp_host) # server.set_debuglevel(1) -server.sendmail("matkor@pld-linux.org","builder-ac@pld-linux.org", msg) # Adresses should be taken from .requestrc +server.sendmail("matkor@pld-linux.org","builder-ac@pld-linux.org", msg) # Adresses should be taken from .requestrc server.quit()