from daklib.dbconn import *
from daklib.config import Config
from daklib import utils, daklog
-from multiprocessing import Pool
+from daklib.dakmultiprocessing import DakProcessPool, PROC_STATUS_SUCCESS, PROC_STATUS_SIGNALRAISED
import apt_pkg, os, stat, sys
from daklib.lists import getSources, getBinaries, getArchAll
+EXIT_STATUS = 0
+
def listPath(suite, component, architecture = None, type = None,
incremental_mode = False):
"""returns full path to the list file"""
(file, timestamp) = listPath(suite, component,
incremental_mode = incremental_mode)
+ message = "sources list for %s %s" % (suite.suite_name, component.component_name)
+
for _, filename in getSources(suite, component, session, timestamp):
file.write(filename + '\n')
- session.close()
+ session.rollback()
file.close()
- return "sources list for %s %s" % (suite.suite_name, component.component_name)
+ return message
def writeAllList(suite_id, component_id, architecture_id, type, incremental_mode):
session = DBConn().session()
(file, timestamp) = listPath(suite, component, architecture, type,
incremental_mode)
+ message = "all list for %s %s (arch=%s, type=%s)" % (suite.suite_name, component.component_name, architecture.arch_string, type)
+
for _, filename in getArchAll(suite, component, architecture, type,
session, timestamp):
file.write(filename + '\n')
- session.close()
+ session.rollback()
file.close()
- return "all list for %s %s (arch=%s, type=%s)" % (suite.suite_name, component.component_name, architecture.arch_string, type)
+ return message
def writeBinaryList(suite_id, component_id, architecture_id, type, incremental_mode):
session = DBConn().session()
(file, timestamp) = listPath(suite, component, architecture, type,
incremental_mode)
+ message = "binary list for %s %s (arch=%s, type=%s)" % (suite.suite_name, component.component_name, architecture.arch_string, type)
+
for _, filename in getBinaries(suite, component, architecture, type,
session, timestamp):
file.write(filename + '\n')
- session.close()
+ session.rollback()
file.close()
- return "binary list for %s %s (arch=%s, type=%s)" % (suite.suite_name, component.component_name, architecture.arch_string, type)
+ return message
def usage():
print """Usage: dak generate_filelist [OPTIONS]
Options = cnf.SubTree("Filelist::Options")
if Options['Help']:
usage()
- pool = Pool()
+ pool = DakProcessPool()
query_suites = query_suites. \
filter(Suite.suite_name.in_(utils.split_args(Options['Suite'])))
query_components = query_components. \
query_architectures = query_architectures. \
filter(Architecture.arch_string.in_(utils.split_args(Options['Architecture'])))
- def log(message):
- Logger.log([message])
+ def parse_results(message):
+ # Split out into (code, msg)
+ code, msg = message
+ if code == PROC_STATUS_SUCCESS:
+ Logger.log([msg])
+ elif code == PROC_STATUS_SIGNALRAISED:
+ Logger.log(['E: Subprocess recieved signal ', msg])
+ else:
+ Logger.log(['E: ', msg])
for suite in query_suites:
suite_id = suite.suite_id
pass
elif architecture.arch_string == 'source':
pool.apply_async(writeSourceList,
- (suite_id, component_id, Options['Incremental']), callback=log)
+ (suite_id, component_id, Options['Incremental']), callback=parse_results)
elif architecture.arch_string == 'all':
pool.apply_async(writeAllList,
(suite_id, component_id, architecture_id, 'deb',
- Options['Incremental']), callback=log)
+ Options['Incremental']), callback=parse_results)
pool.apply_async(writeAllList,
(suite_id, component_id, architecture_id, 'udeb',
- Options['Incremental']), callback=log)
+ Options['Incremental']), callback=parse_results)
else: # arch any
pool.apply_async(writeBinaryList,
(suite_id, component_id, architecture_id, 'deb',
- Options['Incremental']), callback=log)
+ Options['Incremental']), callback=parse_results)
pool.apply_async(writeBinaryList,
(suite_id, component_id, architecture_id, 'udeb',
- Options['Incremental']), callback=log)
+ Options['Incremental']), callback=parse_results)
pool.close()
pool.join()
+
# this script doesn't change the database
session.close()
+ Logger.close()
+
+ sys.exit(pool.overall_status())
+
if __name__ == '__main__':
main()