]> git.decadent.org.uk Git - dak.git/blobdiff - dak/examine_package.py
Merge branch 'master' into security
[dak.git] / dak / examine_package.py
index d452d71ca64359df7261fae40142c0798aa244df..ae3ec6c9c4e4b4f7f22d1468b4e859e9b6abe4f9 100755 (executable)
@@ -34,7 +34,8 @@
 
 import errno, os, pg, re, sys, md5
 import apt_pkg, apt_inst
-import daklib.database, daklib.utils, daklib.queue
+from daklib import database
+from daklib import utils
 
 ################################################################################
 
@@ -62,9 +63,9 @@ re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys())))
 Cnf = None
 projectB = None
 
-Cnf = daklib.utils.get_conf()
+Cnf = utils.get_conf()
 projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
-daklib.database.init(Cnf, projectB)
+database.init(Cnf, projectB)
 
 printed_copyrights = {}
 
@@ -225,7 +226,7 @@ def read_control (filename):
     maintainer = ''
     arch = ''
 
-    deb_file = daklib.utils.open_file(filename)
+    deb_file = utils.open_file(filename)
     try:
         extracts = apt_inst.debExtractControl(deb_file)
         control = apt_pkg.ParseSection(extracts)
@@ -279,9 +280,9 @@ def read_control (filename):
 def read_changes_or_dsc (filename):
     dsc = {}
 
-    dsc_file = daklib.utils.open_file(filename)
+    dsc_file = utils.open_file(filename)
     try:
-        dsc = daklib.utils.parse_changes(filename)
+        dsc = utils.parse_changes(filename)
     except:
         return formatted_text("can't parse .dsc control info")
     dsc_file.close()
@@ -398,8 +399,7 @@ def get_copyright (deb_filename):
     cright = o.read()[:-1]
 
     if cright == "":
-        print_formatted_text("WARNING: No copyright found, please check package manually.")
-        return
+        return formatted_text("WARNING: No copyright found, please check package manually.")
 
     doc_directory = re_doc_directory.sub(r'\1', cright)
     if package != doc_directory:
@@ -407,16 +407,15 @@ def get_copyright (deb_filename):
 
     o = os.popen("dpkg-deb --fsys-tarfile %s | tar xvOf - %s 2>/dev/null" % (deb_filename, cright))
     cright = o.read()
-    crightmd5 = md5.md5(cright).hexdigest()
+    copyrightmd5 = md5.md5(cright).hexdigest()
 
     res = ""
-    if printed_copyrights.has_key(crightmd5) and printed_copyrights[crightmd5] != "%s (%s)" % (package, deb_filename):
-        res += formatted_text( "NOTE: Copyright is the same as %s.\n" % \
-                (printed_copyrights[crightmd5]))
+    if printed_copyrights.has_key(copyrightmd5) and printed_copyrights[copyrightmd5] != "%s (%s)" % (package, deb_filename):
+        res += formatted_text( "NOTE: Copyright is the same as %s.\n\n" % \
+                               (printed_copyrights[copyrightmd5]))
     else:
-        printed_copyrights[crightmd5] = "%s (%s)" % (package, deb_filename)
-    res += formatted_text(cright)
-    return res
+        printed_copyrights[copyrightmd5] = "%s (%s)" % (package, deb_filename)
+    return res+formatted_text(cright)
 
 def check_dsc (dsc_filename):
     (dsc) = read_changes_or_dsc(dsc_filename)
@@ -459,11 +458,11 @@ def check_deb (deb_filename):
 # Read a file, strip the signature and return the modified contents as
 # a string.
 def strip_pgp_signature (filename):
-    f = daklib.utils.open_file (filename)
+    file = utils.open_file (filename)
     contents = ""
     inside_signature = 0
     skip_next = 0
-    for line in f.readlines():
+    for line in file.readlines():
         if line[:-1] == "":
             continue
         if inside_signature:
@@ -481,7 +480,7 @@ def strip_pgp_signature (filename):
             inside_signature = 0
             continue
         contents += line
-    f.close()
+    file.close()
     return contents
 
 def display_changes(changes_filename):
@@ -491,8 +490,8 @@ def display_changes(changes_filename):
 def check_changes (changes_filename):
     display_changes(changes_filename)
 
-    changes = daklib.utils.parse_changes (changes_filename)
-    files = daklib.utils.build_file_list(changes)
+    changes = utils.parse_changes (changes_filename)
+    files = utils.build_file_list(changes)
     for f in files.keys():
         if f.endswith(".deb") or f.endswith(".udeb"):
             check_deb(f)
@@ -503,7 +502,7 @@ def check_changes (changes_filename):
 def main ():
     global Cnf, projectB, db_files, waste, excluded
 
-#    Cnf = daklib.utils.get_conf()
+#    Cnf = utils.get_conf()
 
     Arguments = [('h',"help","Examine-Package::Options::Help"),
                  ('H',"html-output","Examine-Package::Options::Html-Output"),
@@ -531,24 +530,24 @@ def main ():
                 if f.endswith(".changes"):
                     check_changes(f)
                 elif f.endswith(".deb") or f.endswith(".udeb"):
-                    check_deb(f)
+                    check_deb(file)
                 elif f.endswith(".dsc"):
                     check_dsc(f)
                 else:
-                    daklib.utils.fubar("Unrecognised file type: '%s'." % (f))
+                    utils.fubar("Unrecognised file type: '%s'." % (f))
             finally:
                 if not Options["Html-Output"]:
                     # Reset stdout here so future less invocations aren't FUBAR
                     less_fd.close()
                     sys.stdout = stdout_fd
         except IOError, e:
-            if e.errno == errno.EPIPE:
-                daklib.utils.warn("[examine-package] Caught EPIPE; skipping.")
+            if errno.errorcode[e.errno] == 'EPIPE':
+                utils.warn("[examine-package] Caught EPIPE; skipping.")
                 pass
             else:
                 raise
         except KeyboardInterrupt:
-            daklib.utils.warn("[examine-package] Caught C-c; skipping.")
+            utils.warn("[examine-package] Caught C-c; skipping.")
             pass
 
 #######################################################################################