X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=jennifer;h=d824914bc472bfb7753bc379acc52daa5327a7b6;hb=50c3a3dfa86c10a3b7eae0f887912605275b518e;hp=d16ee76554c51da648638dc3325803396133a4de;hpb=fa7e261a93a404e11614551823680c38ef330c2a;p=dak.git diff --git a/jennifer b/jennifer index d16ee765..d824914b 100755 --- a/jennifer +++ b/jennifer @@ -2,7 +2,7 @@ # Checks Debian packages from Incoming # Copyright (C) 2000, 2001 James Troup -# $Id: jennifer,v 1.3 2002-02-15 04:01:14 troup Exp $ +# $Id: jennifer,v 1.10 2002-03-15 15:51:20 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 @@ -44,7 +44,7 @@ re_is_changes = re.compile (r"(.+?)_(.+?)_(.+?)\.changes$"); ################################################################################ # Globals -jennifer_version = "$Revision: 1.3 $"; +jennifer_version = "$Revision: 1.10 $"; Cnf = None; Options = None; @@ -459,30 +459,12 @@ def check_changes(): changes["chopversion"] = utils.re_no_epoch.sub('', changes["version"]) changes["chopversion2"] = utils.re_no_revision.sub('', changes["chopversion"]) - # Ensure the changes filename matches it's contents. - - base_filename = os.path.basename(filename); - m = re_is_changes.match(base_filename); - # source package name - if m: - file_source = m.group(1); - if changes["source"] != file_source: - reject("package name part of changes filename (%s) does not match source field (%s) in the changes file." % (file_source, changes["source"])); - # source version - file_version = m.group(2); - if changes["chopversion"] != file_version: - reject("version part of changes filename (%s) does not match version field (%s) in the changes file." % (file_version, changes["chopversion"])); - else: - reject("invalid changes filename '%s'." % (filename)); - - # But ... we can't check architecture because there's no - # established policy or practice on how to handle - # multi-architecture uploads. Instead we check what we can and - # reject if there's a changes file of the same name already in one + # Check there isn't already a changes file of the same name in one # of the queue directories. + base_filename = os.path.basename(filename); for dir in [ "Accepted", "Byhand", "Done", "New" ]: if os.path.exists(Cnf["Dir::Queue%sDir" % (dir) ]+'/'+base_filename): - reject("a changes file with the same name exists in the %s directory." % (dir)); + reject("a changes file with the same name already exists in the %s directory." % (dir)); return 1; @@ -676,7 +658,7 @@ def check_files(): files[file]["new"] = 1; if files[file]["type"] == "deb": - reject(Katie.check_binaries_against_db(file, suite)); + reject(Katie.check_binaries_against_db(file, suite),""); # Validate the component component = files[file]["component"]; @@ -705,6 +687,15 @@ def check_files(): if files[file]["oldfiles"].has_key(suite) and files[file]["oldfiles"][suite]["name"] != files[file]["component"]: files[file]["othercomponents"] = files[file]["oldfiles"][suite]["name"]; + # If the .changes file says it has source, it must have source. + if changes["architecture"].has_key("source"): + has_source = 0; + for file in file_keys: + if files[file]["type"] == "dsc": + has_source = 1; + if not has_source: + reject("no source found and Architecture line in changes mention source."); + ############################################################################### def check_dsc (): @@ -753,10 +744,10 @@ def check_dsc (): reject("version ('%s') in .dsc does not match version ('%s') in .changes." % (epochless_dsc_version, changes_version)); # Ensure source is newer than existing source in target suites - reject(Katie.check_source_against_db(file)); + reject(Katie.check_source_against_db(file),""); (reject_msg, is_in_incoming) = Katie.check_dsc_against_db(file); - reject(reject_msg); + reject(reject_msg, ""); if is_in_incoming: if not Options["No-Action"]: copy_to_holding(is_in_incoming); @@ -867,7 +858,6 @@ def check_timestamps(): time.ctime(ancient_date))); except: reject("%s: timestamp check failed; caught %s" % (filename, sys.exc_type)); - raise; ################################################################################ ################################################################################ @@ -933,12 +923,11 @@ def action (): answer = 'A'; while string.find(prompt, answer) == -1: - print prompt,; - answer = utils.our_raw_input() - m = katie.re_default_answer.match(prompt) + answer = utils.our_raw_input(prompt); + m = katie.re_default_answer.match(prompt); if answer == "": - answer = m.group(1) - answer = string.upper(answer[:1]) + answer = m.group(1); + answer = string.upper(answer[:1]); if answer == 'R': os.chdir (pkg.directory); @@ -977,10 +966,10 @@ def do_byhand (summary): file_keys = files.keys(); - # Move all the files into the accepted directory + # Move all the files into the byhand directory utils.move (pkg.changes_file, Cnf["Dir::QueueByhandDir"]); for file in file_keys: - utils.move (file, Cnf["Dir::QueueByhandDir"]); + utils.move (file, Cnf["Dir::QueueByhandDir"], perms=0660); # Check for override disparities if not Cnf["Dinstall::Options::No-Mail"]: @@ -1008,7 +997,7 @@ def acknowledge_new (summary): # Move all the files into the accepted directory utils.move (pkg.changes_file, Cnf["Dir::QueueNewDir"]); for file in file_keys: - utils.move (file, Cnf["Dir::QueueNewDir"]); + utils.move (file, Cnf["Dir::QueueNewDir"], perms=0660); if not Options["No-Mail"]: print "Sending new ack.";