X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=natalie;h=4a5d62bca7ac641f41f32527bdf7c80727d74df8;hb=80b0cf4b95f879ce7e6e41297bced5c4e955f697;hp=cdcc75ad4631e58cf142ebcf1011120d9ad29bd2;hpb=7c24d50ddbf290d779cd4fce50b1f77fd738cf95;p=dak.git diff --git a/natalie b/natalie index cdcc75ad..4a5d62bc 100755 --- a/natalie +++ b/natalie @@ -1,8 +1,8 @@ #!/usr/bin/env python # Manipulate override files -# Copyright (C) 2000, 2001, 2002 James Troup -# $Id: natalie,v 1.3 2002-07-14 15:01:19 troup Exp $ +# Copyright (C) 2000, 2001, 2002, 2003 James Troup +# $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 @@ -20,7 +20,37 @@ ################################################################################ -import pg, string, sys, time; +# On 30 Nov 1998, James Troup wrote: +# +# > James Troup<2> +# > +# > 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. + +# + +################################################################################ + +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");