#!/usr/bin/env python
# Handles NEW and BYHAND packages
-# Copyright (C) 2001 James Troup <james@nocrew.org>
-# $Id: lisa,v 1.4 2002-02-22 02:20:06 troup Exp $
+# Copyright (C) 2001, 2002 James Troup <james@nocrew.org>
+# $Id: lisa,v 1.10 2002-05-10 00:24:23 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
################################################################################
-import errno, os, readline, string, stat, sys, tempfile;
+import copy, errno, os, readline, string, stat, sys, tempfile;
import apt_pkg, apt_inst;
import db_access, fernanda, katie, logging, utils;
# Globals
-lisa_version = "$Revision: 1.4 $";
+lisa_version = "$Revision: 1.10 $";
Cnf = None;
Options = None;
if f.has_key("othercomponents"):
new[pkg]["othercomponents"] = f["othercomponents"];
- for suite in changes["distribution"].keys():
+ for suite in changes["suite"].keys():
suite_id = db_access.get_suite_id(suite);
for pkg in new.keys():
component_id = db_access.get_component_id(new[pkg]["component"]);
del files[file]["new"];
del new[pkg];
- if changes["distribution"].has_key("stable"):
+ if changes["suite"].has_key("stable"):
print "WARNING: overrides will be added for stable!";
for pkg in new.keys():
if new[pkg].has_key("othercomponents"):
summary = summary + "Package: %s\n" % (control.Find("Package"));
summary = summary + "Description: %s\n" % (control.Find("Description"));
Katie.Subst["__BINARY_DESCRIPTIONS__"] = summary;
- bxa_mail = utils.TemplateSubst(Katie.Subst,open(Cnf["Dir::TemplatesDir"]+"/lisa.bxa_notification","r").read());
+ bxa_mail = utils.TemplateSubst(Katie.Subst,Cnf["Dir::Templates"]+"/lisa.bxa_notification");
utils.send_mail(bxa_mail,"");
################################################################################
files = Katie.pkg.files;
projectB.query("BEGIN WORK");
- for suite in changes["distribution"].keys():
+ for suite in changes["suite"].keys():
suite_id = db_access.get_suite_id(suite);
for pkg in new.keys():
component_id = db_access.get_component_id(new[pkg]["component"]);
projectB.query("COMMIT WORK");
- if Cnf.FindI("Dinstall::BXANotify"):
+ if Cnf.FindB("Dinstall::BXANotify"):
do_bxa_notification();
################################################################################
files = Katie.pkg.files;
changes = Katie.pkg.changes;
+ # Make a copy of distribution we can happily trample on
+ changes["suite"] = copy.copy(changes["distribution"]);
+
# Fix up the list of target suites
- for suite in changes["distribution"].keys():
+ for suite in changes["suite"].keys():
override = Cnf.Find("Suite::%s::OverrideSuite" % (suite));
if override:
- del changes["distribution"][suite];
- changes["distribution"][override] = 1;
+ del changes["suite"][suite];
+ changes["suite"][override] = 1;
# Validate suites
- for suite in changes["distribution"].keys():
+ for suite in changes["suite"].keys():
suite_id = db_access.get_suite_id(suite);
if suite_id == -1:
utils.fubar("%s has invalid suite '%s' (possibly overriden). say wha?" % (changes, suite));
elif answer == 'E':
new = edit_overrides (new);
elif answer == 'M':
- Katie.do_reject(1, Options["Manual-Reject"]);
- os.unlink(Katie.pkg.changes_file[:-8]+".katie");
- done = 1;
+ aborted = Katie.do_reject(1, Options["Manual-Reject"]);
+ if not aborted:
+ os.unlink(Katie.pkg.changes_file[:-8]+".katie");
+ done = 1;
elif answer == 'S':
done = 1;
elif answer == 'Q':
# Kill me now? **FIXME**
Cnf["Dinstall::Options::No-Mail"] = "";
- bcc = "X-Lisa: %s" % (lisa_version);
+ bcc = "X-Katie: %s" % (lisa_version);
if Cnf.has_key("Dinstall::Bcc"):
Katie.Subst["__BCC__"] = bcc + "\nBcc: %s" % (Cnf["Dinstall::Bcc"]);
else:
Katie.Subst["__BCC__"] = bcc;
for changes_file in changes_files:
+ changes_file = utils.validate_changes_file_arg(changes_file, 0);
+ if not changes_file:
+ continue;
print "\n" + changes_file;
do_pkg (changes_file);