]> git.decadent.org.uk Git - dak.git/blobdiff - dak/check_archive.py
Use the database instead of Lists for check_archive
[dak.git] / dak / check_archive.py
index b9837d3049d529da66db95423e8ab023b0d610aa..53db5ba7256aee3453f3f8ae0f8f6cb80e6b68d2 100755 (executable)
@@ -95,8 +95,7 @@ def process_dir (unused, dirname, filenames):
     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)
@@ -119,7 +118,7 @@ def check_files():
     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:
@@ -137,7 +136,7 @@ def check_files():
 
     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))
@@ -149,26 +148,18 @@ def check_dscs():
     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 dsc_file in DBConn().session().query(DSCFile):
+        f = dsc_file.poolfile.fullpath
+        try:
+            utils.parse_changes(f, signing_rules=1, dsc_file=1)
+        except InvalidDscError, line:
+            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
 
     if count:
         utils.warn("Found %s invalid .dsc files." % (count))
@@ -339,7 +330,7 @@ def check_files_in_dsc():
 
         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))
 
@@ -461,7 +452,7 @@ def chk_bd_process_dir (unused, dirname, filenames):
         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: