X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fcheck_archive.py;h=a47febbd229768a952812e5537061f35cc243893;hb=6b3c8ccbd61325e2b833ed252b5545a190bff92f;hp=3e537d805c1073d811c9ac9a1edbc1ed6a24885b;hpb=6cfc82886d71c7436a97ddfe7a5a1dde297886d2;p=dak.git diff --git a/dak/check_archive.py b/dak/check_archive.py index 3e537d80..a47febbd 100755 --- a/dak/check_archive.py +++ b/dak/check_archive.py @@ -479,11 +479,40 @@ def check_build_depends(): ################################################################################ +_add_missing_source_checksums_query = R""" +INSERT INTO source_metadata + (src_id, key_id, value) +SELECT + s.id, + :checksum_key, + E'\n' || + (SELECT STRING_AGG(' ' || tmp.checksum || ' ' || tmp.size || ' ' || tmp.basename, E'\n' ORDER BY tmp.basename) + FROM + (SELECT + CASE :checksum_type + WHEN 'Files' THEN f.md5sum + WHEN 'Checksums-Sha1' THEN f.sha1sum + WHEN 'Checksums-Sha256' THEN f.sha256sum + END AS checksum, + f.size, + SUBSTRING(f.filename FROM E'/([^/]*)\\Z') AS basename + FROM files f JOIN dsc_files ON f.id = dsc_files.file + WHERE dsc_files.source = s.id AND f.id != s.file + ) AS tmp + ) + + FROM + source s + WHERE NOT EXISTS (SELECT 1 FROM source_metadata md WHERE md.src_id=s.id AND md.key_id = :checksum_key); +""" + def add_missing_source_checksums(): """ Add missing source checksums to source_metadata """ session = DBConn().session() for checksum in ['Files', 'Checksums-Sha1', 'Checksums-Sha256']: - rows = session.execute('SELECT source_metadata_add_missing_checksum(:type)', {'type': checksum}).scalar() + checksum_key = get_or_set_metadatakey(checksum, session).key_id + rows = session.execute(_add_missing_source_checksums_query, + {'checksum_key': checksum_key, 'checksum_type': checksum}).rowcount if rows > 0: print "Added {0} missing entries for {1}".format(rows, checksum) session.commit() @@ -500,9 +529,9 @@ def main (): if not cnf.has_key("Check-Archive::Options::%s" % (i)): cnf["Check-Archive::Options::%s" % (i)] = "" - args = apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv) + args = apt_pkg.parse_commandline(cnf.Cnf, Arguments, sys.argv) - Options = cnf.SubTree("Check-Archive::Options") + Options = cnf.subtree("Check-Archive::Options") if Options["Help"]: usage()