From: Torsten Werner Date: Fri, 25 Mar 2011 13:04:44 +0000 (+0100) Subject: Write an additional arch all (only) file in generate-filelist. X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=a5a05713abef203c9dee7c8626acd3a27980a774;hp=20ff008f8db866172d086f89691d90fb7b83e0bd;p=dak.git Write an additional arch all (only) file in generate-filelist. Signed-off-by: Torsten Werner --- diff --git a/dak/generate_filelist.py b/dak/generate_filelist.py index dcf6864f..1f4d6654 100755 --- a/dak/generate_filelist.py +++ b/dak/generate_filelist.py @@ -41,7 +41,7 @@ from daklib.threadpool import ThreadPool from daklib import utils import apt_pkg, os, stat, sys -from daklib.lists import getSources, getBinaries +from daklib.lists import getSources, getBinaries, getArchAll def listPath(suite, component, architecture = None, type = None, incremental_mode = False): @@ -74,6 +74,17 @@ def writeSourceList(args): session.close() file.close() +def writeAllList(args): + (suite, component, architecture, type, incremental_mode) = args + (file, timestamp) = listPath(suite, component, architecture, type, + incremental_mode) + session = DBConn().session() + for _, filename in getArchAll(suite, component, architecture, type, + session, timestamp): + file.write(filename + '\n') + session.close() + file.close() + def writeBinaryList(args): (suite, component, architecture, type, incremental_mode) = args (file, timestamp) = listPath(suite, component, architecture, type, @@ -144,7 +155,14 @@ def main(): elif architecture.arch_string == 'source': threadpool.queueTask(writeSourceList, (suite, component, Options['Incremental'])) - elif architecture.arch_string != 'all': + elif architecture.arch_string == 'all': + threadpool.queueTask(writeAllList, + (suite, component, architecture, 'deb', + Options['Incremental'])) + threadpool.queueTask(writeAllList, + (suite, component, architecture, 'udeb', + Options['Incremental'])) + else: # arch any threadpool.queueTask(writeBinaryList, (suite, component, architecture, 'deb', Options['Incremental'])) diff --git a/daklib/lists.py b/daklib/lists.py index a8d3cedb..a7cf8685 100755 --- a/daklib/lists.py +++ b/daklib/lists.py @@ -56,6 +56,21 @@ def getSources(suite, component, session, timestamp = None): 'component': component.component_id } return fetch(query, args, session) +def getArchAll(suite, component, architecture, type, session, timestamp = None): + ''' + Calculates all binaries in suite and component of architecture 'all' (and + only 'all') and type 'deb' or 'udeb' optionally limited to binaries newer + than timestamp. Returns a generator that yields a tuple of binary id and + full pathname to the u(deb) file. See function writeAllList() in + dak/generate_filelist.py for an example that uses this function. + ''' + query = suite.binaries.filter_by(architecture = architecture, type = type) + if timestamp is not None: + extra_cond = 'extract(epoch from bin_associations.created) > %d' % timestamp + query = query.filter(extra_cond) + for binary in query: + yield (binary.binary_id, binary.poolfile.fullpath) + def getBinaries(suite, component, architecture, type, session, timestamp = None): ''' Calculates the binaries in suite and component of architecture and