X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=tea;h=b6a28095e926ffb35a87606b7bc5cb359f036c3f;hb=b51815ac34b619062cff7a6633ad43e6af255917;hp=1d4c62df85d56023959e368fd694287821b28f4f;hpb=b8b597a4685189c7084950809395993ac7af3980;p=dak.git diff --git a/tea b/tea index 1d4c62df..b6a28095 100755 --- a/tea +++ b/tea @@ -1,8 +1,8 @@ #!/usr/bin/env python # Sanity check the database -# Copyright (C) 2000, 2001 James Troup -# $Id: tea,v 1.16 2002-02-12 23:14:58 troup Exp $ +# Copyright (C) 2000, 2001, 2002 James Troup +# $Id: tea,v 1.18 2002-05-08 11:13:02 troup Exp $ # 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 @@ -74,14 +74,14 @@ def check_files(): if os.access(filename, os.R_OK) == 0: utils.warn("'%s' doesn't exist." % (filename)); - file = utils.open_file(Cnf["Dir::OverrideDir"]+'override.unreferenced'); + file = utils.open_file(Cnf["Dir::Override"]+'override.unreferenced'); for filename in file.readlines(): filename = filename[:-1]; excluded[filename] = ""; print "Checking against existent files..."; - os.path.walk(Cnf["Dir::RootDir"]+'dists/', process_dir, None); + os.path.walk(Cnf["Dir::Root"]+'dists/', process_dir, None); print print "%s wasted..." % (utils.size_type(waste)); @@ -95,7 +95,7 @@ def check_dscs(): if component == "mixed": continue; component = string.lower(component); - list_filename = '%s%s_%s_source.list' % (Cnf["Dir::ListsDir"], suite, component); + 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(): file = line[:-1]; @@ -222,6 +222,35 @@ def check_timestamps(): ################################################################################ +def check_missing_tar_gz_in_dsc(): + count = 0; + + q = projectB.query("SELECT l.path, f.filename FROM files f, location l WHERE f.location = l.id AND f.filename ~ '.dsc$'") + for i in q.getresult(): + filename = os.path.abspath(i[0] + i[1]); + try: + # NB: don't enforce .dsc syntax + dsc = utils.parse_changes(filename, 0); + except: + utils.fubar("error parsing .dsc file '%s'." % (filename)); + dsc_files = utils.build_file_list(dsc, 1); + has_tar = 0; + for file in dsc_files.keys(): + m = utils.re_issource.match(file); + if not m: + utils.fubar("%s not recognised as source." % (file)); + type = m.group(3); + if type == "orig.tar.gz" or type == "tar.gz": + has_tar = 1; + if not has_tar: + utils.warn("%s has no .tar.gz in the .dsc file." % (file)); + count = count + 1; + + if count: + utils.warn("Found %s invalid .dsc files." % (count)); + +################################################################################ + def main (): global Cnf, projectB, db_files, waste, excluded; @@ -236,7 +265,8 @@ def main (): #check_override(); #check_dscs(); #check_files(); - check_timestamps(); + #check_timestamps(); + check_missing_tar_gz_in_dsc(); #######################################################################################