]> git.decadent.org.uk Git - dak.git/blobdiff - dak/examine_package.py
examine_package
[dak.git] / dak / examine_package.py
index 49d18dc685dfabb0668e9b70c76833c39d6dd336..5c80cf05dfc9163a0daf3bdb4a06c21092f71ed9 100755 (executable)
@@ -1,7 +1,13 @@
 #!/usr/bin/env python
 
-# Script to automate some parts of checking NEW packages
-# Copyright (C) 2000, 2001, 2002, 2003, 2006  James Troup <james@nocrew.org>
+"""
+Script to automate some parts of checking NEW packages
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
+@copyright: 2000, 2001, 2002, 2003, 2006  James Troup <james@nocrew.org>
+@copyright: 2009  Joerg Jaspert <joerg@debian.org>
+@license: GNU General Public License version 2 or later
+"""
 
 # 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, pg, re, sys, md5
+import errno
+import os
+import pg
+import re
+import sys
+import md5
 import apt_pkg, apt_inst
 from daklib import database
 from daklib import utils
-
-################################################################################
-
-re_package = re.compile(r"^(.+?)_.*")
-re_doc_directory = re.compile(r".*/doc/([^/]*).*")
-
-re_contrib = re.compile('^contrib/')
-re_nonfree = re.compile('^non\-free/')
-
-re_arch = re.compile("Architecture: .*")
-re_builddep = re.compile("Build-Depends: .*")
-re_builddepind = re.compile("Build-Depends-Indep: .*")
-
-re_localhost = re.compile("localhost\.localdomain")
-re_version = re.compile('^(.*)\((.*)\)')
-
-re_newlinespace = re.compile('\n')
-re_spacestrip = re.compile('(\s)')
+from daklib.regexes import html_escaping, re_html_escaping, re_version, re_spacestrip, \
+                           re_contrib, re_nonfree, re_localhost, re_newlinespace, \
+                           re_package, re_doc_directory
 
 ################################################################################
 
@@ -88,7 +84,7 @@ PACKAGE can be a .changes, .dsc, .deb or .udeb filename."""
 
 def escape_if_needed(s):
     if use_html:
-        return utils.re_html_escaping.sub(lambda x: utils.html_escaping.get(x.group(0)), s)
+        return re_html_escaping.sub(lambda x: html_escaping.get(x.group(0)), s)
     else:
         return s
 
@@ -348,7 +344,7 @@ def create_depends_string (suite, depends_tree):
         comma_count += 1
     return result
 
-def output_deb_info(suite, filename):
+def output_deb_info(suite, filename, packagename):
     (control, control_keys, section, depends, recommends, arch, maintainer) = read_control(filename)
 
     if control == '':
@@ -430,7 +426,7 @@ def check_deb (suite, deb_filename):
 
 
     foldable_output("control file for %s" % (filename), "binary-%s-control"%packagename,
-                    output_deb_info(suite, deb_filename), norow=True)
+                    output_deb_info(suite, deb_filename, packagename), norow=True)
 
     if is_a_udeb:
         foldable_output("skipping lintian check for udeb", "binary-%s-lintian"%packagename,
@@ -455,11 +451,11 @@ def check_deb (suite, deb_filename):
 # Read a file, strip the signature and return the modified contents as
 # a string.
 def strip_pgp_signature (filename):
-    file = utils.open_file (filename)
+    inputfile = utils.open_file (filename)
     contents = ""
     inside_signature = 0
     skip_next = 0
-    for line in file.readlines():
+    for line in inputfile.readlines():
         if line[:-1] == "":
             continue
         if inside_signature:
@@ -477,7 +473,7 @@ def strip_pgp_signature (filename):
             inside_signature = 0
             continue
         contents += line
-    file.close()
+    inputfile.close()
     return contents
 
 def display_changes(suite, changes_filename):
@@ -485,7 +481,10 @@ def display_changes(suite, changes_filename):
     foldable_output(changes_filename, "changes", changes, norow=True)
 
 def check_changes (changes_filename):
-    changes = utils.parse_changes (changes_filename)
+    try:
+        changes = utils.parse_changes (changes_filename)
+    except ChangesUnicodeError:
+        utils.warn("Encoding problem with changes file %s" % (changes_filename))
     display_changes(changes['distribution'], changes_filename)
 
     files = utils.build_file_list(changes)