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):
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,
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']))
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.
"""
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:
'''
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)
'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
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))
{
Root "tests/fixtures/ftp/";
Pool "/srv/ftp-master.debian.org/ftp/pool/";
+ TempPath "/tmp";
};
DB