- cnf = Config()
- Arguments = [('h', "help", "Filelist::Options::Help"),
- ('s', "suite", "Filelist::Options::Suite", "HasArg"),
- ('c', "component", "Filelist::Options::Component", "HasArg"),
- ('a', "architecture", "Filelist::Options::Architecture", "HasArg")]
- query_suites = DBConn().session().query(Suite)
- suites = [suite.suite_name for suite in query_suites.all()]
- if not cnf.has_key('Filelist::Options::Suite'):
- cnf['Filelist::Options::Suite'] = ','.join(suites)
- # we can ask the database for components if 'mixed' is gone
- if not cnf.has_key('Filelist::Options::Component'):
- cnf['Filelist::Options::Component'] = 'main,contrib,non-free'
- query_architectures = DBConn().session().query(Architecture)
- architectures = \
- [architecture.arch_string for architecture in query_architectures.all()]
- if not cnf.has_key('Filelist::Options::Architecture'):
- cnf['Filelist::Options::Architecture'] = ','.join(architectures)
- cnf['Filelist::Options::Help'] = ''
- apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv)
- Options = cnf.SubTree("Filelist::Options")
- if Options['Help']:
- usage()
- session = DBConn().session()
- suite_arch = session.query(SuiteArchitecture)
- for suite_name in utils.split_args(Options['Suite']):
- suite = query_suites.filter_by(suite_name = suite_name).one()
- join = suite_arch.filter_by(suite_id = suite.suite_id)
- for component_name in utils.split_args(Options['Component']):
- component = session.query(Component).\
- filter_by(component_name = component_name).one()
- for architecture_name in utils.split_args(Options['Architecture']):
- architecture = query_architectures.\
- filter_by(arch_string = architecture_name).one()
- try:
- join.filter_by(arch_id = architecture.arch_id).one()
- if architecture_name == 'source':
- writeSourceList(suite, component, session)
- elif architecture_name != 'all':
- writeBinaryList(suite, component, architecture, 'deb', session)
- writeBinaryList(suite, component, architecture, 'udeb', session)
- except:
- pass
- # this script doesn't change the database
- session.rollback()
+ cnf = Config()
+ Logger = daklog.Logger(cnf, 'generate-filelist')
+ Arguments = [('h', "help", "Filelist::Options::Help"),
+ ('s', "suite", "Filelist::Options::Suite", "HasArg"),
+ ('c', "component", "Filelist::Options::Component", "HasArg"),
+ ('a', "architecture", "Filelist::Options::Architecture", "HasArg"),
+ ('i', "incremental", "Filelist::Options::Incremental")]
+ session = DBConn().session()
+ query_suites = session.query(Suite)
+ suites = [suite.suite_name for suite in query_suites]
+ if not cnf.has_key('Filelist::Options::Suite'):
+ cnf['Filelist::Options::Suite'] = ','.join(suites).encode()
+ query_components = session.query(Component)
+ components = \
+ [component.component_name for component in query_components]
+ if not cnf.has_key('Filelist::Options::Component'):
+ cnf['Filelist::Options::Component'] = ','.join(components).encode()
+ query_architectures = session.query(Architecture)
+ architectures = \
+ [architecture.arch_string for architecture in query_architectures]
+ if not cnf.has_key('Filelist::Options::Architecture'):
+ cnf['Filelist::Options::Architecture'] = ','.join(architectures).encode()
+ cnf['Filelist::Options::Help'] = ''
+ cnf['Filelist::Options::Incremental'] = ''
+ apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv)
+ Options = cnf.SubTree("Filelist::Options")
+ if Options['Help']:
+ usage()
+ pool = Pool()
+ query_suites = query_suites. \
+ filter(Suite.suite_name.in_(utils.split_args(Options['Suite'])))
+ query_components = query_components. \
+ filter(Component.component_name.in_(utils.split_args(Options['Component'])))
+ query_architectures = query_architectures. \
+ filter(Architecture.arch_string.in_(utils.split_args(Options['Architecture'])))
+
+ def log(message):
+ Logger.log([message])
+
+ for suite in query_suites:
+ suite_id = suite.suite_id
+ for component in query_components:
+ component_id = component.component_id
+ for architecture in query_architectures:
+ architecture_id = architecture.arch_id
+ if architecture not in suite.architectures:
+ pass
+ elif architecture.arch_string == 'source':
+ pool.apply_async(writeSourceList,
+ (suite_id, component_id, Options['Incremental']), callback=log)
+ elif architecture.arch_string == 'all':
+ pool.apply_async(writeAllList,
+ (suite_id, component_id, architecture_id, 'deb',
+ Options['Incremental']), callback=log)
+ pool.apply_async(writeAllList,
+ (suite_id, component_id, architecture_id, 'udeb',
+ Options['Incremental']), callback=log)
+ else: # arch any
+ pool.apply_async(writeBinaryList,
+ (suite_id, component_id, architecture_id, 'deb',
+ Options['Incremental']), callback=log)
+ pool.apply_async(writeBinaryList,
+ (suite_id, component_id, architecture_id, 'udeb',
+ Options['Incremental']), callback=log)
+ pool.close()
+ pool.join()
+ # this script doesn't change the database
+ session.close()