[dak/master] make generate-filelist multithreaded
Signed-off-by: Torsten Werner <twerner@debian.org>
---
dak/generate_filelist.py | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/dak/generate_filelist.py b/dak/generate_filelist.py
index a668622..e6a2ba5 100755
--- a/dak/generate_filelist.py
+++ b/dak/generate_filelist.py
@@ -37,6 +37,7 @@ Generate file lists for apt-ftparchive.
from daklib.dbconn import *
from daklib.config import Config
+from daklib.threadpool import ThreadPool
from daklib import utils
import apt_pkg, os, sys
@@ -117,7 +118,8 @@ def listPath(suite, component, architecture = None, type = None):
pathname = os.path.join(Config()["Dir::Lists"], filename)
return utils.open_file(pathname, "w")
-def writeSourceList(suite, component):
+def writeSourceList(args):
+ (suite, component) = args
file = listPath(suite, component)
session = DBConn().session()
for filename in getSources(suite, component, session):
@@ -125,7 +127,8 @@ def writeSourceList(suite, component):
session.close()
file.close()
-def writeBinaryList(suite, component, architecture, type):
+def writeBinaryList(args):
+ (suite, component, architecture, type) = args
file = listPath(suite, component, architecture, type)
session = DBConn().session()
for filename in getBinaries(suite, component, architecture, type, session):
@@ -171,6 +174,7 @@ def main():
usage()
session = DBConn().session()
suite_arch = session.query(SuiteArchitecture)
+ threadpool = ThreadPool()
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)
@@ -183,12 +187,15 @@ def main():
try:
join.filter_by(arch_id = architecture.arch_id).one()
if architecture_name == 'source':
- writeSourceList(suite, component)
+ threadpool.queueTask(writeSourceList, (suite, component))
elif architecture_name != 'all':
- writeBinaryList(suite, component, architecture, 'deb')
- writeBinaryList(suite, component, architecture, 'udeb')
+ threadpool.queueTask(writeBinaryList,
+ (suite, component, architecture, 'deb'))
+ threadpool.queueTask(writeBinaryList,
+ (suite, component, architecture, 'udeb'))
except:
pass
+ threadpool.joinAll()
# this script doesn't change the database
session.close()
--
1.5.6.5
Reply to: