]> 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 d77f3fd0fd674be44b899a402c4bc8048f85e564..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))
 
@@ -427,8 +418,8 @@ def check_indices_files_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 ]:
+            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":
@@ -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:
@@ -475,6 +466,7 @@ def chk_bd_process_dir (unused, dirname, filenames):
 
 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)
 
 ################################################################################