from daklib.dbconn import *
from daklib import utils
from daklib.config import Config
+from daklib.dak_exceptions import InvalidDscError, ChangesUnicodeError, CantOpenError
################################################################################
Parse every .dsc file in the archive and check for it's validity.
"""
- cnf = Config()
-
count = 0
- suite = 'unstable'
-
- for component in cnf.SubTree("Component").List():
- component = component.lower()
- list_filename = '%s%s_%s_source.list' % (cnf["Dir::Lists"], suite, component)
- list_file = utils.open_file(list_filename)
-
- for line in list_file.readlines():
- f = line[:-1]
- try:
- utils.parse_changes(f, signing_rules=1, dsc_file=1)
- except InvalidDscError, line:
- utils.warn("syntax error in .dsc file '%s', line %s." % (f, line))
- count += 1
- except ChangesUnicodeError:
- utils.warn("found invalid changes file, not properly utf-8 encoded")
- count += 1
+
+ for src in DBConn().session().query(DBSource).order_by(DBSource.source, DBSource.version):
+ f = src.poolfile.fullpath
+ try:
+ utils.parse_changes(f, signing_rules=1, dsc_file=1)
+ except InvalidDscError:
+ utils.warn("syntax error in .dsc file %s" % f)
+ count += 1
+ except ChangesUnicodeError:
+ utils.warn("found invalid dsc file (%s), not properly utf-8 encoded" % f)
+ count += 1
+ except CantOpenError:
+ utils.warn("missing dsc file (%s)" % f)
+ count += 1
+ except Exception, e:
+ utils.warn("miscellaneous error parsing dsc file (%s): %s" % (f, str(e)))
+ count += 1
if count:
utils.warn("Found %s invalid .dsc files." % (count))