]> git.decadent.org.uk Git - dak.git/blobdiff - natalie
Add new top level directories
[dak.git] / natalie
diff --git a/natalie b/natalie
index cdcc75ad4631e58cf142ebcf1011120d9ad29bd2..4a5d62bca7ac641f41f32527bdf7c80727d74df8 100755 (executable)
--- a/natalie
+++ b/natalie
@@ -1,8 +1,8 @@
 #!/usr/bin/env python
 
 # Manipulate override files
-# Copyright (C) 2000, 2001, 2002  James Troup <james@nocrew.org>
-# $Id: natalie,v 1.3 2002-07-14 15:01:19 troup Exp $
+# Copyright (C) 2000, 2001, 2002, 2003  James Troup <james@nocrew.org>
+# $Id: natalie,v 1.7 2005-11-15 09:50:32 ajt 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 pg, string, sys, time;
+# On 30 Nov 1998, James Troup wrote:
+# 
+# > James Troup<2> <troup2@debian.org>
+# > 
+# >    James is a clone of James; he's going to take over the world.
+# >    After he gets some sleep.
+# 
+# Could you clone other things too? Sheep? Llamas? Giant mutant turnips?
+# 
+# Your clone will need some help to take over the world, maybe clone up an
+# army of penguins and threaten to unleash them on the world, forcing
+# governments to sway to the new James' will!
+# 
+# Yes, I can envision a day when James' duplicate decides to take a horrific
+# vengance on the James that spawned him and unleashes his fury in the form
+# of thousands upon thousands of chickens that look just like Captin Blue
+# Eye! Oh the horror.
+# 
+# Now you'll have to were name tags to people can tell you apart, unless of
+# course the new clone is truely evil in which case he should be easy to
+# identify!
+# 
+# Jason
+# Chicken. Black. Helicopters.
+# Be afraid.
+
+# <Pine.LNX.3.96.981130011300.30365Z-100000@wakko>
+
+################################################################################
+
+import pg, sys, time;
 import utils, db_access, logging;
 import apt_pkg;
 
@@ -87,61 +117,62 @@ def process_file (file, suite, component, type, action):
     start_time = time.time();
     projectB.query("BEGIN WORK");
     for line in file.readlines():
-        line = string.strip(utils.re_comments.sub('', line[:-1]))
+        line = utils.re_comments.sub('', line).strip();
         if line == "":
             continue;
 
         maintainer_override = None;
         if type == "dsc":
-            split_line = string.split(line, None, 2);
+            split_line = line.split(None, 2);
             if len(split_line) == 2:
                 (package, section) = split_line;
             elif len(split_line) == 3:
                 (package, section, maintainer_override) = split_line;
             else:
                 utils.warn("'%s' does not break into 'package section [maintainer-override]'." % (line));
-                c_error = c_error + 1;
+                c_error += 1;
                 continue;
             priority = "source";
         else: # binary or udeb
-            split_line = string.split(line, None, 3);
+            split_line = line.split(None, 3);
             if len(split_line) == 3:
                 (package, priority, section) = split_line;
             elif len(split_line) == 4:
                 (package, priority, section, maintainer_override) = split_line;
             else:
                 utils.warn("'%s' does not break into 'package priority section [maintainer-override]'." % (line));
-                c_error = c_error + 1;
+                c_error += 1;
                 continue;
 
         section_id = db_access.get_section_id(section);
         if section_id == -1:
             utils.warn("'%s' is not a valid section. ['%s' in suite %s, component %s]." % (section, package, suite, component));
-            c_error = c_error + 1;
+            c_error += 1;
             continue;
         priority_id = db_access.get_priority_id(priority);
         if priority_id == -1:
             utils.warn("'%s' is not a valid priority. ['%s' in suite %s, component %s]." % (priority, package, suite, component));
-            c_error = c_error + 1;
+            c_error += 1;
             continue;
 
         if new.has_key(package):
             utils.warn("Can't insert duplicate entry for '%s'; ignoring all but the first. [suite %s, component %s]" % (package, suite, component));
-            c_error = c_error + 1;
+            c_error += 1;
             continue;
         new[package] = "";
         if original.has_key(package):
             (old_priority_id, old_section_id, old_maintainer_override, old_priority, old_section) = original[package];
             if action == "add" or old_priority_id == priority_id and \
                old_section_id == section_id and \
-               old_maintainer_override == maintainer_override:
+               ((old_maintainer_override == maintainer_override) or \
+               (old_maintainer_override == "" and maintainer_override == None)):
                 # If it's unchanged or we're in 'add only' mode, ignore it
-                c_skipped = c_skipped + 1;
+                c_skipped += 1;
                 continue;
             else:
                 # If it's changed, delete the old one so we can
                 # reinsert it with the new information
-                c_updated = c_updated + 1;
+                c_updated += 1;
                 projectB.query("DELETE FROM override WHERE suite = %s AND component = %s AND package = '%s' AND type = %s"
                                % (suite_id, component_id, package, type_id));
                 # Log changes
@@ -153,14 +184,14 @@ def process_file (file, suite, component, type, action):
                     Logger.log(["changed maintainer override",package,old_maintainer_override,maintainer_override]);
                 update_p = 1;
         else:
-            c_added = c_added + 1;
+            c_added += 1;
             update_p = 0;
 
         if maintainer_override:
             projectB.query("INSERT INTO override (suite, component, type, package, priority, section, maintainer) VALUES (%s, %s, %s, '%s', %s, %s, '%s')"
                            % (suite_id, component_id, type_id, package, priority_id, section_id, maintainer_override));
         else:
-            projectB.query("INSERT INTO override (suite, component, type, package, priority, section) VALUES (%s, %s, %s, '%s', %s, %s)"
+            projectB.query("INSERT INTO override (suite, component, type, package, priority, section,maintainer) VALUES (%s, %s, %s, '%s', %s, %s, '')"
                            % (suite_id, component_id, type_id, package, priority_id, section_id));
 
         if not update_p:
@@ -172,7 +203,7 @@ def process_file (file, suite, component, type, action):
             if not new.has_key(package):
                 projectB.query("DELETE FROM override WHERE suite = %s AND component = %s AND package = '%s' AND type = %s"
                                % (suite_id, component_id, package, type_id));
-                c_removed = c_removed + 1;
+                c_removed += 1;
                 Logger.log(["removed override",suite,component,type,package]);
 
     projectB.query("COMMIT WORK");