#!/usr/bin/env python
# Installs Debian packaes
-# Copyright (C) 2000 James Troup <james@nocrew.org>
-# $Id: katie,v 1.27 2001-02-04 04:27:47 troup Exp $
+# Copyright (C) 2000, 2001 James Troup <james@nocrew.org>
+# $Id: katie,v 1.31 2001-03-14 05:12:53 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
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"];
try:
dsc = utils.parse_changes(file, 1)
except utils.cant_open_exc:
- reject_message = reject_message + "Rejected: can't read changes file '%s'.\n" % (filename)
+ reject_message = reject_message + "Rejected: can't read changes file '%s'.\n" % (file)
return 0;
except utils.changes_parse_error_exc, line:
- reject_message = reject_message + "Rejected: error parsing changes file '%s', can't grok: %s.\n" % (filename, line)
+ reject_message = reject_message + "Rejected: error parsing changes file '%s', can't grok: %s.\n" % (file, line)
return 0;
except utils.invalid_dsc_format_exc, line:
- reject_message = reject_message + "Rejected: syntax error in .dsc file '%s', line %s.\n" % (filename, line)
+ reject_message = reject_message + "Rejected: syntax error in .dsc file '%s', line %s.\n" % (file, line)
return 0;
try:
dsc_files = utils.build_file_list(dsc, 1)
reject_message = reject_message + "Rejected: no Files: field in .dsc file.\n";
continue;
except utils.changes_parse_error_exc, line:
- reject_message = "Rejected: error parsing .dsc file '%s', can't grok: %s.\n" % (filename, line);
+ reject_message = "Rejected: error parsing .dsc file '%s', can't grok: %s.\n" % (file, line);
continue;
# Try and find all files mentioned in the .dsc. This has
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;
projectB.query("COMMIT WORK");
- utils.move (changes_filename, Cnf["Dir::IncomingDir"] + 'DONE/' + os.path.basename(changes_filename))
+ try:
+ utils.move (changes_filename, Cnf["Dir::IncomingDir"] + 'DONE/' + os.path.basename(changes_filename))
+ except:
+ sys.stderr.write("W: couldn't move changes file '%s' to DONE directory [Got %s].\n" % (os.path.basename(changes_filename), sys.exc_type));
install_count = install_count + 1;
try:
utils.move (changes_filename, "%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));
+ sys.stderr.write("W: couldn't reject changes file '%s' [Got %s].\n" % (base_changes_filename, sys.exc_type));
pass;
for file in files.keys():
if os.path.exists(file):
if manual_reject_message == "":
result = os.system("vi +6 %s" % (reject_file))
if result != 0:
- sys.stderr.write ("vi invocation failed for `%s'!" % (reject_file))
+ sys.stderr.write ("vi invocation failed for `%s'!\n" % (reject_file))
sys.exit(result)
# Then process it as if it were an automatic rejection
(dsc_rfc822, dsc_name, dsc_email) = utils.fix_maintainer (dsc.get("maintainer",Cnf["Dinstall::MyEmailAddress"]));
bugs = changes["closes"].keys()
bugs.sort()
- if dsc_name == changes["maintainername"]:
+ # changes["changedbyname"] == dsc_name is probably never true, but better
+ # safe than sorry
+ if dsc_name == changes["maintainername"] and (changes["changedbyname"] == "" or changes["changedbyname"] == dsc_name):
summary = summary + "Closing bugs: "
for bug in bugs:
summary = summary + "%s " % (bug)
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