createrepo/__init__.py worker.py
[email protected] Wed, 31 Aug 2011 16:48:47 +0000 (UTC)
| Newsgroups | gmane.linux.rpm.metadata |
|---|---|
| Message-ID | <[email protected]> |
createrepo/__init__.py | 8 +++++++- worker.py | 11 ++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) New commits: commit fcb7fa19a488fd60c27b912fe2bbc16b614decb8 Author: Seth Vidal <[email protected]> Date: Wed Aug 31 12:47:18 2011 -0400 add --pkglist option to worker.py - this allows us to pass the list of pkgs from a tempfile made by the main process. Apparently the shell doesn't like it when the worker is passed 30K pkgs as arguments :) this should resolve https://bugzilla.redhat.com/show_bug.cgi?id=734838 diff --git a/createrepo/__init__.py b/createrepo/__init__.py index e3c18aa..0fbbff3 100644 --- a/createrepo/__init__.py +++ b/createrepo/__init__.py @@ -608,6 +608,12 @@ class MetaDataGenerator: base_worker_cmdline.append('--verbose') for worker_num in range(self.conf.workers): + pkl = self._worker_tmp_path + '/pkglist-%s' % worker_num + print pkl + f = open(pkl, 'w') + f.write('\n'.join(worker_chunks[worker_num])) + f.close() + # make the worker directory workercmdline = [] workercmdline.extend(base_worker_cmdline) @@ -616,7 +622,7 @@ class MetaDataGenerator: workercmdline.append('--tmpmdpath=%s' % thisdir) else: raise MDError, "Unable to create worker path: %s" % thisdir - workercmdline.extend(worker_chunks[worker_num]) + workercmdline.append('--pkglist=%s/pkglist-%s' % (self._worker_tmp_path, worker_num)) worker_cmd_dict[worker_num] = workercmdline diff --git a/worker.py b/worker.py index ab78d90..23c87a3 100755 --- a/worker.py +++ b/worker.py @@ -5,6 +5,7 @@ import yum import createrepo import os import rpmUtils +import re from optparse import OptionParser @@ -23,6 +24,8 @@ def main(args): parser = OptionParser() parser.add_option('--tmpmdpath', default=None, help="path where the outputs should be dumped for this worker") + parser.add_option('--pkglist', default=None, + help="file to read the pkglist from in lieu of all of them on the cli") parser.add_option("--pkgoptions", default=[], action='append', help="pkgoptions in the format of key=value") parser.add_option("--quiet", default=False, action='store_true', @@ -68,7 +71,13 @@ def main(args): fl = open(opts.tmpmdpath + '/filelists.xml' , 'w') other = open(opts.tmpmdpath + '/other.xml' , 'w') - + if opts.pkglist: + for line in open(opts.pkglist,'r').readlines(): + line = line.strip() + if re.match('^\s*\#.*', line) or re.match('^\s*$', line): + continue + pkgs.append(line) + for pkgfile in pkgs: pkgpath = reldir + '/' + pkgfile if not os.path.exists(pkgpath):