X-Git-Url: https://git.decadent.org.uk/gitweb/?p=dak.git;a=blobdiff_plain;f=dak%2Fmake_pkg_file_mapping.py;h=f52836f8b2c32881cc0f894a79411115d717ee01;hp=60c39d3ec68dcb25a577a63feb6e944c60ebdd8a;hb=17c5cab4eb8d5181ec7a81267a4e2e6b43c0fc65;hpb=8d69857ef2e89af1a4dcaa069527d7a8efbece89 diff --git a/dak/make_pkg_file_mapping.py b/dak/make_pkg_file_mapping.py index 60c39d3e..f52836f8 100755 --- a/dak/make_pkg_file_mapping.py +++ b/dak/make_pkg_file_mapping.py @@ -31,19 +31,13 @@ and binary package version it has in a standard rfc2822-like format. ################################################################################ -import os -import pg import sys -from daklib import database -from daklib import utils -################################################################################ - -projectB = None #: database connection, pgobject +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. @@ -52,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 = """ @@ -64,24 +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 """ - for row in projectB.query(query_sources).getresult(): + 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 projectB.query(query_binaries).getresult(): + 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 @@ -93,12 +94,21 @@ def build_mapping(): ################################################################################ +def usage(): + print "usage: dak make-pkg-file-mapping " + sys.exit(0) + +################################################################################ + def main(): - global projectB + if len(sys.argv) != 2: + usage() + + archive_name = sys.argv[1] - Cnf = utils.get_conf() - projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) - build_mapping() + session = DBConn().session() + archive = session.query(Archive).filter_by(archive_name=archive_name).one() + build_mapping(archive, session) #########################################################################################