]> git.decadent.org.uk Git - dak.git/blobdiff - katie
Remove versions for unreleased suites, since they're not released yet :)Add "Tree...
[dak.git] / katie
diff --git a/katie b/katie
index 13edbd8533fbcbda6ba96e94556d4d1de5d66a85..4858485042cc9b77fb76397060ee46e2d17e3bf8 100755 (executable)
--- a/katie
+++ b/katie
@@ -2,7 +2,7 @@
 
 # Installs Debian packaes
 # Copyright (C) 2000  James Troup <james@nocrew.org>
-# $Id: katie,v 1.25 2001-01-28 09:06:44 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
@@ -39,8 +39,6 @@ import utils, db_access
 ###############################################################################
 
 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");
@@ -159,7 +157,10 @@ def in_override_p (package, component, suite, binary_type, file):
 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:
@@ -167,10 +168,9 @@ def check_changes(filename):
         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:
@@ -296,7 +296,7 @@ def check_files():
             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
@@ -350,7 +350,7 @@ def check_files():
                 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)
@@ -427,6 +427,10 @@ def check_files():
             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"];
@@ -505,7 +509,6 @@ def check_dsc ():
                     q = projectB.query("SELECT l.path, f.filename, l.type, f.id FROM files f, location l WHERE (f.filename ~ '/%s$' OR f.filename = '%s') AND l.id = f.location" % (utils.regex_safe(dsc_file), dsc_file));
                     ql = q.getresult();
 
-
                     if ql != []:
                         # Unfortunately, we make get more than one match
                         # here if, for example, the package was in potato
@@ -610,19 +613,18 @@ def check_override ():
 
     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 != "-":
                 # Ignore this; it's a common mistake and not worth whining about
-                if section == "non-US/main" and override_section == "non-US":
+                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;
@@ -942,7 +944,7 @@ def stable_install (changes_filename, summary, short_summary):
     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));
@@ -985,8 +987,8 @@ def reject (changes_filename, manual_reject_mail_filename):
     # 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):
@@ -1163,7 +1165,7 @@ administrators by mailing ftpmaster@debian.org)
         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