# Installs Debian packaes
# Copyright (C) 2000 James Troup <james@nocrew.org>
-# $Id: katie,v 1.26 2001-01-31 03:36:36 troup Exp $
+# $Id: katie,v 1.29 2001-02-09 22:15:45 troup Exp $
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
###############################################################################
re_isanum = re.compile (r'^\d+$');
-re_isadeb = re.compile (r'.*\.u?deb$');
-re_issource = re.compile (r'(.+)_(.+?)\.(orig\.tar\.gz|diff\.gz|tar\.gz|dsc)');
re_changes = re.compile (r'changes$');
re_default_answer = re.compile(r"\[(.*)\]");
re_fdnic = re.compile("\n\n");
def check_changes(filename):
global reject_message, changes, files
- # Parse the .changes field into a dictionary [FIXME - need to trap errors, pass on to reject_message etc.]
+ # Default in case we bail out
+ changes["maintainer822"] = Cnf["Dinstall::MyEmailAddress"];
+
+ # Parse the .changes field into a dictionary
try:
changes = utils.parse_changes(filename, 0)
except utils.cant_open_exc:
return 0;
except utils.changes_parse_error_exc, line:
reject_message = "Rejected: error parsing changes file '%s', can't grok: %s.\n" % (filename, line)
- changes["maintainer822"] = Cnf["Dinstall::MyEmailAddress"];
return 0;
- # Parse the Files field from the .changes into another dictionary [FIXME need to trap errors as above]
+ # Parse the Files field from the .changes into another dictionary
try:
files = utils.build_file_list(changes, "");
except utils.changes_parse_error_exc, line:
files[file]["byhand"] = 1;
files[file]["type"] = "byhand";
# Checks for a binary package...
- elif re_isadeb.match(file) != None:
+ elif utils.re_isadeb.match(file) != None:
files[file]["type"] = "deb";
# Extract package information using dpkg-deb
files[file]["source"] = files[file]["package"];
# Checks for a source package...
else:
- m = re_issource.match(file)
+ m = utils.re_issource.match(file)
if m != None:
files[file]["package"] = m.group(1)
files[file]["version"] = m.group(2)
if component_id == -1:
reject_message = reject_message + "Rejected: file '%s' has unknown component '%s'.\n" % (file, component);
continue;
+
+ # Validate the priority
+ if string.find(files[file]["priority"],'/') != -1:
+ reject_message = reject_message + "Rejected: file '%s' has invalid priority '%s' [contains '/'].\n" % (file, files[file]["priority"]);
# Check the md5sum & size against existing files (if any)
location = Cnf["Dir::PoolDir"];
summary = ""
for file in files.keys():
- if not files[file].has_key("new") and (files[file]["type"] == "dsc" or files[file]["type"] == "deb"):
+ if not files[file].has_key("new") and files[file]["type"] == "deb":
section = files[file]["section"];
override_section = files[file]["override section"];
if section != override_section and section != "-":
if string.lower(section) == "non-us/main" and string.lower(override_section) == "non-us":
continue;
summary = summary + "%s: section is overridden from %s to %s.\n" % (file, section, override_section);
- if files[file]["type"] == "deb": # don't do priority for source
- priority = files[file]["priority"];
- override_priority = files[file]["override priority"];
- if priority != override_priority and priority != "-":
- summary = summary + "%s: priority is overridden from %s to %s.\n" % (file, priority, override_priority);
+ priority = files[file]["priority"];
+ override_priority = files[file]["override priority"];
+ if priority != override_priority and priority != "-":
+ summary = summary + "%s: priority is overridden from %s to %s.\n" % (file, priority, override_priority);
if summary == "":
return;
for file in files.keys():
if files[file]["type"] == "deb":
new_changelog.write("stable/%s/binary-%s/%s\n" % (files[file]["component"], files[file]["architecture"], file));
- elif re_issource.match(file) != None:
+ elif utils.re_issource.match(file) != None:
new_changelog.write("stable/%s/source/%s\n" % (files[file]["component"], file));
else:
new_changelog.write("%s\n" % (file));
# Move the .changes files and it's contents into REJECT/ (if we can; errors are ignored)
try:
utils.move (changes_filename, "%s/REJECT/%s" % (Cnf["Dir::IncomingDir"], base_changes_filename));
- except utils.cant_overwrite_exc:
- sys.stderr.write("W: couldn't overwrite existing file '%s/REJECT/%s" % (Cnf["Dir::IncomingDir"], base_changes_filename));
+ except:
+ sys.stderr.write("W: couldn't reject changes file '%s' [Got %s]" % (base_changes_filename, sys.exc_type));
pass;
for file in files.keys():
if os.path.exists(file):
control_message = ""
for bug in bugs:
summary = summary + "%s " % (bug)
- control_message = control_message + "severity %s fixed\n" % (bug)
+ control_message = control_message + "tag %s + fixed\n" % (bug)
if action and control_message != "":
mail_message = """Return-Path: %s
From: %s