4 Prints out, for every file in the pool, which source package and version it
5 belongs to and for binary packages additionally which arch, binary package
6 and binary package version it has in a standard rfc2822-like format.
8 @contact: Debian FTP Master <ftpmaster@debian.org>
9 @copyright: 2009 Peter Palfrader <peter@palfrader.org>
10 @license: GNU General Public License version 2 or later
13 # This program is free software; you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation; either version 2 of the License, or
16 # (at your option) any later version.
18 # This program is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 # GNU General Public License for more details.
23 # You should have received a copy of the GNU General Public License
24 # along with this program; if not, write to the Free Software
25 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 ################################################################################
30 # <arma> it's crypto -- think of it like magic if you like.
32 ################################################################################
36 from daklib.dbconn import *
38 ################################################################################
40 def build_mapping(archive, session):
41 # The ORDER BY is in the queries so that compression of the output works
42 # better. It's the difference between a 9 megabyte bzip2 and a 2.5 mb
49 './pool/' || component.name || '/' || files.filename AS path
51 JOIN dsc_files ON source.id=dsc_files.source
52 JOIN files ON files.id=dsc_files.file
53 JOIN files_archive_map ON files.id = files_archive_map.file_id
54 JOIN component ON files_archive_map.component_id = component.id
55 WHERE files_archive_map.archive_id = :archive_id
56 ORDER BY source, version
63 architecture.arch_string AS arch,
64 './pool/' || component.name || '/' || files.filename AS path,
66 binaries.version AS bin_version
68 JOIN binaries ON source.id=binaries.source
69 JOIN files ON binaries.file=files.id
70 JOIN files_archive_map ON files.id = files_archive_map.file_id
71 JOIN component ON files_archive_map.component_id = component.id
72 JOIN architecture ON architecture.id=binaries.architecture
73 WHERE files_archive_map.archive_id = :archive_id
74 ORDER BY source, version, package, bin_version
77 for row in session.execute(query_sources, {'archive_id': archive.archive_id}).fetchall():
78 (source, version, path) = row
80 print "Source: %s"%source
81 print "Source-Version: %s"%version
84 for row in session.execute(query_binaries, {'archive_id': archive.archive_id}).fetchall():
85 (source, version, arch, path, bin, binv) = row
87 print "Source: %s"%source
88 print "Source-Version: %s"%version
89 print "Architecture: %s"%arch
90 print "Binary: %s"%bin
91 print "Binary-Version: %s"%binv
94 ################################################################################
97 print "usage: dak make-pkg-file-mapping <archive>"
100 ################################################################################
103 if len(sys.argv) != 2:
106 archive_name = sys.argv[1]
108 session = DBConn().session()
109 archive = session.query(Archive).filter_by(archive_name=archive_name).one()
110 build_mapping(archive, session)
112 #########################################################################################
114 if __name__ == '__main__':
120 # vim:set shiftwidth=4: