]> git.decadent.org.uk Git - dak.git/blobdiff - dak/generate_releases.py
generate_releases: expire by-hash files for all suites
[dak.git] / dak / generate_releases.py
index d947def8a3cca2a886bc9e9db11f6679459207cf..ae3577f3db998d17e7cad6837e58673aa113bcc8 100755 (executable)
@@ -362,12 +362,12 @@ class ReleaseWriter(object):
         out.close()
         os.rename(outfile + '.new', outfile)
 
-        if suite.byhash:
-            query = """
-                UPDATE hashfile SET unreferenced = CURRENT_TIMESTAMP
-                WHERE suite_id = :id AND unreferenced IS NULL"""
-            session.execute(query, {'id': suite.suite_id})
+        query = """
+            UPDATE hashfile SET unreferenced = CURRENT_TIMESTAMP
+            WHERE suite_id = :id AND unreferenced IS NULL"""
+        session.execute(query, {'id': suite.suite_id})
 
+        if suite.byhash:
             for filename in fileinfo:
                 if not os.path.exists(filename):
                     # probably an uncompressed index we didn't generate
@@ -390,7 +390,17 @@ class ReleaseWriter(object):
                             INSERT INTO hashfile (path, suite_id)
                             VALUES (:p, :id)''',
                             {'p': hashfile, 'id': suite.suite_id})
+        session.commit()
 
+        if suite.byhash:
+            for filename in fileinfo:
+                if not os.path.exists(filename):
+                    # probably an uncompressed index we didn't generate
+                    continue
+
+                for h in hashes:
+                    field = h.release_field
+                    hashfile = os.path.join(os.path.dirname(filename), 'by-hash', field, fileinfo[filename][field])
                     try:
                         os.makedirs(os.path.dirname(hashfile))
                     except OSError as exc:
@@ -402,7 +412,6 @@ class ReleaseWriter(object):
                         if exc.errno != errno.EEXIST:
                             raise
 
-                session.commit()
 
         sign_release_dir(suite, os.path.dirname(outfile))