From: Mark Hymers Date: Fri, 25 Mar 2011 13:12:57 +0000 (+0000) Subject: Merge branch 'master' of ssh://ftp-master.debian.org/srv/ftp.debian.org/git/dak X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=5f6b728e74c2eee87418250c3118c20b3b40a590;hp=fd30313f55f8c8071d1faf430792a4d59999fc56;p=dak.git Merge branch 'master' of ssh://ftp-master.debian.org/srv/ftp.debian.org/git/dak --- 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/dak/make_changelog.py b/dak/make_changelog.py index 398c3526..ac5581d0 100755 --- a/dak/make_changelog.py +++ b/dak/make_changelog.py @@ -160,7 +160,7 @@ def display_changes(uploads, index): print upload[index] prev_upload = upload[0] -def export_files(session, pool, clpool, temppath): +def export_files(session, pool, clpool): """ Export interesting files from source packages. """ @@ -282,7 +282,7 @@ def main(): if export: if cnf.exportpath: exportpath = os.path.join(Cnf['Dir::Export'], cnf.exportpath) - export_files(session, Cnf['Dir::Pool'], exportpath, Cnf['Dir::TempPath']) + export_files(session, Cnf['Dir::Pool'], exportpath) else: utils.fubar('No changelog export path defined') elif binnmu: diff --git a/daklib/contents.py b/daklib/contents.py index a5950524..f3077aab 100755 --- a/daklib/contents.py +++ b/daklib/contents.py @@ -441,7 +441,8 @@ class UnpackedSource(object): ''' The dscfilename is a name of a DSC file that will be extracted. ''' - self.root_directory = os.path.join(mkdtemp(), 'root') + temp_directory = mkdtemp(dir = Config()['Dir::TempPath']) + self.root_directory = os.path.join(temp_directory, 'root') command = ('dpkg-source', '--no-copy', '--no-check', '-q', '-x', dscfilename, self.root_directory) check_call(command, preexec_fn = subprocess_setup) diff --git a/daklib/lists.py b/daklib/lists.py index a8d3cedb..e7f8bf96 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, binarytype = 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 diff --git a/daklib/queue.py b/daklib/queue.py index 0d9ca5e1..4ea117b3 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -87,6 +87,9 @@ def get_type(f, session): file_type = f["dbtype"] elif re_source_ext.match(f["type"]): file_type = "dsc" + elif f['architecture'] == 'source' and f["type"] == 'unreadable': + utils.warn('unreadable source file (will continue and hope for the best)') + return f["type"] else: file_type = f["type"] utils.fubar("invalid type (%s) for new. Dazed, confused and sure as heck not continuing." % (file_type)) diff --git a/tests/fixtures/dak.conf b/tests/fixtures/dak.conf index 6f68238d..3a728f78 100644 --- a/tests/fixtures/dak.conf +++ b/tests/fixtures/dak.conf @@ -22,6 +22,7 @@ Dir { Root "tests/fixtures/ftp/"; Pool "/srv/ftp-master.debian.org/ftp/pool/"; + TempPath "/tmp"; }; DB