from daklib.dbconn import *
from daklib import utils
from daklib.config import Config
+from daklib.dak_exceptions import InvalidDscError, ChangesUnicodeError, CantOpenError
################################################################################
if dirname.find('proposed-updates') != -1:
return
for name in filenames:
- filename = os.path.abspath(dirname+'/'+name)
- filename = filename.replace('potato-proposed-updates', 'proposed-updates')
+ filename = os.path.abspath(os.path.join(dirname,name))
if os.path.isfile(filename) and not os.path.islink(filename) and not db_files.has_key(filename) and not excluded.has_key(filename):
waste += os.stat(filename)[stat.ST_SIZE]
print "%s" % (filename)
db_files.clear()
for f in q.all():
- filename = os.path.abspath(f.location.path, f.filename)
+ filename = os.path.abspath(os.path.join(f.location.path, f.filename))
db_files[filename] = ""
if os.access(filename, os.R_OK) == 0:
if f.last_used:
print "Existent files not in db:"
- os.path.walk(cnf["Dir::Root"] + 'pool/', process_dir, None)
+ os.path.walk(os.path.join(cnf["Dir::Root"], 'pool/'), process_dir, None)
print
print "%s wasted..." % (utils.size_type(waste))
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)
- 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 as 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))
print suite_name
print "-" * len(suite_name)
print
- suite = get_suite(suite)
- q = s.execute("""
+ suite = get_suite(suite_name)
+ q = session.execute("""
SELECT DISTINCT b.package FROM binaries b, bin_associations ba
WHERE b.id = ba.bin AND ba.suite = :suiteid AND NOT EXISTS
(SELECT 1 FROM override o WHERE o.suite = :suiteid AND o.package = b.package)"""
for j in q.fetchall():
print j[0]
- q = s.execute("""
+ q = session.execute("""
SELECT DISTINCT s.source FROM source s, src_associations sa
WHERE s.id = sa.source AND sa.suite = :suiteid AND NOT EXISTS
(SELECT 1 FROM override o WHERE o.suite = :suiteid and o.package = s.source)"""
try:
# NB: don't enforce .dsc syntax
- dsc = utils.parse_changes(filename)
+ dsc = utils.parse_changes(filename, dsc_file=1)
except:
utils.fubar("error parsing .dsc file '%s'." % (filename))
Ensure files mentioned in Packages & Sources exist
"""
for suite in [ "stable", "testing", "unstable" ]:
- for component in Cnf.ValueList("Suite::%s::Components" % (suite)):
- architectures = database.get_suite_architectures(suite)
- for arch in [ i.lower() for i in architectures ]:
+ for component in get_component_names():
+ architectures = get_suite_architectures(suite)
+ for arch in [ i.arch_string.lower() for i in architectures ]:
if arch == "source":
validate_sources(suite, component)
elif arch == "all":
if not name.endswith(".dsc"):
continue
filename = os.path.abspath(dirname+'/'+name)
- dsc = utils.parse_changes(filename)
+ dsc = utils.parse_changes(filename, dsc_file=1)
for field_name in [ "build-depends", "build-depends-indep" ]:
field = dsc.get(field_name)
if field:
def check_build_depends():
""" Validate build-dependencies of .dsc files in the archive """
+ cnf = Config()
os.path.walk(cnf["Dir::Root"], chk_bd_process_dir, None)
################################################################################