]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/utils.py
merge from master
[dak.git] / daklib / utils.py
index 788bcd41eda0d44a008a516137f6513ed6ee7410..21446fbe9f435685f8c2dcd0c2c8585f7db1b41c 100755 (executable)
@@ -44,11 +44,12 @@ from dbconn import DBConn, get_architecture, get_component, get_suite
 from dak_exceptions import *
 from textutils import fix_maintainer
 from regexes import re_html_escaping, html_escaping, re_single_line_field, \
-                    re_multi_line_field, re_srchasver, re_verwithext, \
-                    re_taint_free, re_gpg_uid, re_re_mark, \
-                    re_whitespace_comment, re_issource
+                    re_multi_line_field, re_srchasver, re_taint_free, \
+                    re_gpg_uid, re_re_mark, re_whitespace_comment, re_issource, \
+                    re_is_orig_source
 
-from srcformats import srcformats
+from formats import parse_format, validate_changes_format
+from srcformats import get_format_from_string
 from collections import defaultdict
 
 ################################################################################
@@ -417,12 +418,15 @@ def check_dsc_files(dsc_filename, dsc=None, dsc_files=None):
             rejmsg.append("%s: lists multiple %s" % (dsc_filename, file_type))
 
     # Source format specific tests
-    for format in srcformats:
-        if format.re_format.match(dsc['format']):
-            rejmsg.extend([
-                '%s: %s' % (dsc_filename, x) for x in format.reject_msgs(has)
-            ])
-            break
+    try:
+        format = get_format_from_string(dsc['format'])
+        rejmsg.extend([
+            '%s: %s' % (dsc_filename, x) for x in format.reject_msgs(has)
+        ])
+
+    except UnknownFormatError:
+        # Not an error here for now
+        pass
 
     return rejmsg
 
@@ -524,30 +528,9 @@ def build_file_list(changes, is_a_dsc=0, field="files", hashname="md5sum"):
     if not changes.has_key(field):
         raise NoFilesFieldError
 
-    # Make sure we recognise the format of the Files: field
-    format = re_verwithext.search(changes.get("format", "0.0"))
-    if not format:
-        raise UnknownFormatError, "%s" % (changes.get("format","0.0"))
-
-    format = format.groups()
-    if format[1] == None:
-        format = int(float(format[0])), 0, format[2]
-    else:
-        format = int(format[0]), int(format[1]), format[2]
-    if format[2] == None:
-        format = format[:2]
-
-    if is_a_dsc:
-        # format = (0,0) are missing format headers of which we still
-        # have some in the archive.
-        if format != (1,0) and format != (0,0) and \
-           format != (3,0,"quilt") and format != (3,0,"native"):
-            raise UnknownFormatError, "%s" % (changes.get("format","0.0"))
-    else:
-        if (format < (1,5) or format > (1,8)):
-            raise UnknownFormatError, "%s" % (changes.get("format","0.0"))
-        if field != "files" and format < (1,8):
-            raise UnknownFormatError, "%s" % (changes.get("format","0.0"))
+    # Validate .changes Format: field
+    if not is_a_dsc:
+        validate_changes_format(parse_format(changes['format']), field)
 
     includes_section = (not is_a_dsc) and field == "files"
 
@@ -1524,5 +1507,3 @@ apt_pkg.ReadConfigFileISC(Cnf,default_config)
 
 if which_conf_file() != default_config:
     apt_pkg.ReadConfigFileISC(Cnf,which_conf_file())
-
-###############################################################################