X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fmake_pkg_file_mapping.py;h=f52836f8b2c32881cc0f894a79411115d717ee01;hb=026bdb9580e6d18bf504d2f44d46890df5d89f1a;hp=38a6bec2aeb65eba5edbfb113181f68195b2cc73;hpb=0dada7c5846e0ae676bbe0b81c1065fe75ca9b86;p=dak.git diff --git a/dak/make_pkg_file_mapping.py b/dak/make_pkg_file_mapping.py index 38a6bec2..f52836f8 100755 --- a/dak/make_pkg_file_mapping.py +++ b/dak/make_pkg_file_mapping.py @@ -31,14 +31,13 @@ and binary package version it has in a standard rfc2822-like format. ################################################################################ -import os import sys from daklib.dbconn import * ################################################################################ -def build_mapping(): +def build_mapping(archive, session): # The ORDER BY is in the queries so that compression of the output works # better. It's the difference between a 9 megabyte bzip2 and a 2.5 mb # bzip2 file. @@ -47,11 +46,15 @@ def build_mapping(): SELECT source.source, source.version, - './pool/' || files.filename AS path + './pool/' || component.name || '/' || files.filename AS path FROM source JOIN dsc_files ON source.id=dsc_files.source JOIN files ON files.id=dsc_files.file - ORDER BY source, version + JOIN files_archive_map ON files.id = files_archive_map.file_id + JOIN component ON files_archive_map.component_id = component.id + JOIN files_archive_map fam_dsc ON fam_dsc.file_id=source.file AND fam_dsc.component_id=component.id AND fam_dsc.archive_id=files_archive_map.archive_id + WHERE files_archive_map.archive_id = :archive_id + ORDER BY source, version, component.id, files.filename """ query_binaries = """ @@ -59,26 +62,27 @@ def build_mapping(): source.source, source.version, architecture.arch_string AS arch, - './pool/' || files.filename AS path, + './pool/' || component.name || '/' || files.filename AS path, binaries.package, binaries.version AS bin_version FROM source JOIN binaries ON source.id=binaries.source JOIN files ON binaries.file=files.id + JOIN files_archive_map ON files.id = files_archive_map.file_id + JOIN component ON files_archive_map.component_id = component.id JOIN architecture ON architecture.id=binaries.architecture + WHERE files_archive_map.archive_id = :archive_id ORDER BY source, version, package, bin_version """ - session = DBConn().session() - - for row in session.execute(query_sources).fetchall(): + for row in session.execute(query_sources, {'archive_id': archive.archive_id}).fetchall(): (source, version, path) = row print "Path: %s"%path print "Source: %s"%source print "Source-Version: %s"%version print - for row in session.execute(query_binaries).fetchall(): + for row in session.execute(query_binaries, {'archive_id': archive.archive_id}).fetchall(): (source, version, arch, path, bin, binv) = row print "Path: %s"%path print "Source: %s"%source @@ -90,9 +94,21 @@ def build_mapping(): ################################################################################ +def usage(): + print "usage: dak make-pkg-file-mapping " + sys.exit(0) + +################################################################################ + def main(): - DBConn() - build_mapping() + if len(sys.argv) != 2: + usage() + + archive_name = sys.argv[1] + + session = DBConn().session() + archive = session.query(Archive).filter_by(archive_name=archive_name).one() + build_mapping(archive, session) #########################################################################################